from datetime import datetime from typing import Optional from pydantic import BaseModel from app.models.transaction import TransactionType # Shared properties class TransactionBase(BaseModel): transaction_type: Optional[TransactionType] = None quantity: Optional[int] = None unit_price: Optional[float] = None reference_number: Optional[str] = None notes: Optional[str] = None transaction_date: Optional[datetime] = None item_id: Optional[int] = None # Properties to receive on transaction creation class TransactionCreate(TransactionBase): transaction_type: TransactionType quantity: int item_id: int transaction_date: Optional[datetime] = datetime.utcnow() # Properties to receive on transaction update class TransactionUpdate(TransactionBase): pass # Properties shared by models in DB class TransactionInDBBase(TransactionBase): id: int transaction_type: TransactionType quantity: int item_id: int transaction_date: datetime recorded_by_id: Optional[int] = None class Config: from_attributes = True # Properties to return to client class Transaction(TransactionInDBBase): pass # Properties stored in DB class TransactionInDB(TransactionInDBBase): pass