
- Set up FastAPI application with CORS and health check endpoint - Create SQLite database models for inventory items, categories, and suppliers - Implement complete CRUD API endpoints for all entities - Add low-stock monitoring functionality - Configure Alembic for database migrations - Set up Ruff for code linting and formatting - Include comprehensive API documentation and README
49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
from datetime import datetime
|
|
|
|
from sqlalchemy import Column, DateTime, Float, ForeignKey, Integer, String, Text
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from .base import Base
|
|
|
|
|
|
class Category(Base):
|
|
__tablename__ = "categories"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
name = Column(String(100), unique=True, index=True, nullable=False)
|
|
description = Column(Text, nullable=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
|
|
items = relationship("InventoryItem", back_populates="category")
|
|
|
|
class Supplier(Base):
|
|
__tablename__ = "suppliers"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
name = Column(String(200), unique=True, index=True, nullable=False)
|
|
contact_person = Column(String(100), nullable=True)
|
|
email = Column(String(100), nullable=True)
|
|
phone = Column(String(20), nullable=True)
|
|
address = Column(Text, nullable=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
|
|
items = relationship("InventoryItem", back_populates="supplier")
|
|
|
|
class InventoryItem(Base):
|
|
__tablename__ = "inventory_items"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
name = Column(String(200), nullable=False)
|
|
sku = Column(String(50), unique=True, index=True, nullable=False)
|
|
description = Column(Text, nullable=True)
|
|
quantity = Column(Integer, default=0)
|
|
unit_price = Column(Float, nullable=False)
|
|
minimum_stock = Column(Integer, default=0)
|
|
category_id = Column(Integer, ForeignKey("categories.id"), nullable=True)
|
|
supplier_id = Column(Integer, ForeignKey("suppliers.id"), nullable=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
|
|
|
category = relationship("Category", back_populates="items")
|
|
supplier = relationship("Supplier", back_populates="items")
|