""" Audit Log Schemas """ from typing import Optional, List, Any, Dict from datetime import date as date_type, time as time_type, datetime from pydantic import BaseModel, Field # --- Response Schemas --- class AuditLogResponse(BaseModel): """ Standard response showing the Legacy columns """ spec_id: int reference: str procedure: str movement: str username: str date: date_type time: time_type # Modern extras timestamp: datetime system: str operation_type: Optional[str] = None table_name: Optional[str] = None record_id: Optional[str] = None class Config: from_attributes = True class AuditLogDetailResponse(AuditLogResponse): """ Detailed response including changed values """ old_values: Optional[Dict[str, Any]] = None new_values: Optional[Dict[str, Any]] = None changed_fields: Optional[List[str]] = None ip_address: Optional[str] = None execution_time_ms: Optional[int] = None # --- List Response --- class AuditLogListResponse(BaseModel): """ Paginated response """ data: List[AuditLogResponse] total: int page: int page_size: int