Automated Action 1d312e5ff6 Implement Small Business Inventory Management System
- Created FastAPI application with SQLite database
- Implemented models for inventory items, categories, suppliers, and transactions
- Added authentication system with JWT tokens
- Implemented CRUD operations for all models
- Set up Alembic for database migrations
- Added comprehensive API documentation
- Configured Ruff for code linting
2025-06-06 20:27:41 +00:00

39 lines
1.2 KiB
Python

from datetime import datetime
import enum
from sqlalchemy import Column, DateTime, Enum, Float, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from app.db.base import Base
class TransactionType(str, enum.Enum):
"""
Enum for transaction types (stock in or out).
"""
STOCK_IN = "stock_in"
STOCK_OUT = "stock_out"
class Transaction(Base):
"""
Transaction model for tracking inventory movements.
"""
__tablename__ = "transactions"
id = Column(Integer, primary_key=True, index=True)
quantity = Column(Integer, nullable=False)
transaction_type = Column(Enum(TransactionType), nullable=False)
unit_price = Column(Float, nullable=False)
total_price = Column(Float, nullable=False)
reference = Column(String, nullable=True)
notes = Column(String, nullable=True)
timestamp = Column(DateTime, default=datetime.utcnow, nullable=False)
# Foreign keys
item_id = Column(Integer, ForeignKey("items.id"), nullable=False)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
# Relationships
item = relationship("Item", back_populates="transactions")
user = relationship("User", back_populates="transactions")