from pydantic import BaseModel from typing import Optional, List from datetime import datetime # --- Operations (Check-in/Check-out Validation) --- class OperationCreate(BaseModel): barcode: str quantity: float user_id: int class BulkOperationCreate(BaseModel): user_id: int items: List[OperationCreate] class TrashOperationCreate(BaseModel): barcode: str quantity: float user_id: int reason: Optional[str] = "unspecified" # --- Sync --- class SyncOperation(BaseModel): type: str # 'CHECK_IN', 'CHECK_OUT' barcode: str quantity: float uuid: Optional[str] = None timestamp: datetime class SyncPayload(BaseModel): user_id: int operations: List[SyncOperation] # --- Audit Logs --- class AuditLogResponse(BaseModel): id: int timestamp: datetime user_id: int username: Optional[str] = None action: str target_item_id: Optional[int] target_item_name: Optional[str] = None target_item_pn: Optional[str] = None target_item_barcode: Optional[str] = None target_snapshot: Optional[str] = None quantity_change: Optional[float] details: Optional[str] = None class Config: from_attributes = True