Automated Action cda1825688 Implement FastAPI inventory management system for small businesses
- 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
2025-06-18 16:50:29 +00:00

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")