Automated Action 700da98f88 Implement small business inventory management system with FastAPI and SQLite
- Created complete RESTful API for inventory management
- Set up database models for items, categories, suppliers, and transactions
- Implemented user authentication with JWT tokens
- Added transaction tracking for inventory movements
- Created comprehensive API endpoints for all CRUD operations
- Set up Alembic for database migrations
- Added input validation and error handling
- Created detailed documentation in README
2025-06-08 10:00:50 +00:00

69 lines
1.5 KiB
Python

from datetime import datetime
from typing import Optional, TYPE_CHECKING, Any
from enum import Enum
from pydantic import BaseModel
# Import at the end to avoid circular imports
if TYPE_CHECKING:
pass
class TransactionType(str, Enum):
PURCHASE = "purchase"
SALE = "sale"
ADJUSTMENT = "adjustment"
RETURN = "return"
# Shared properties
class TransactionBase(BaseModel):
transaction_type: TransactionType
quantity: int
unit_price: float
total_price: float
reference_number: Optional[str] = None
notes: Optional[str] = None
transaction_date: Optional[datetime] = None
item_id: str
user_id: str
# Properties to receive via API on creation
class TransactionCreate(TransactionBase):
pass
# Properties to receive via API on update
class TransactionUpdate(TransactionBase):
transaction_type: Optional[TransactionType] = None
quantity: Optional[int] = None
unit_price: Optional[float] = None
total_price: Optional[float] = None
item_id: Optional[str] = None
user_id: Optional[str] = None
class TransactionInDBBase(TransactionBase):
id: str
created_at: datetime
updated_at: Optional[datetime] = None
class Config:
orm_mode = True
# Additional properties to return via API
class Transaction(TransactionInDBBase):
pass
# Transaction with extended information
class TransactionWithDetails(Transaction):
item: Any
# Import at the end to avoid circular imports
TransactionWithDetails.update_forward_refs()