79 lines
1.9 KiB
Python
79 lines
1.9 KiB
Python
"""
|
|
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
|
|
|
|
|
|
class AuditFileBreadcrumb(BaseModel):
|
|
path: str = Field(default="")
|
|
display_name: str
|
|
|
|
|
|
class AuditFileFolderItem(BaseModel):
|
|
path: str = Field(description="Ruta relativa interna del archivo, para navegación.")
|
|
display_name: str
|
|
|
|
|
|
class AuditFileObjectItem(BaseModel):
|
|
path: str = Field(description="Ruta relativa interna del archivo, para descarga.")
|
|
display_name: str
|
|
size: int
|
|
last_modified: Optional[datetime] = None
|
|
|
|
|
|
class AuditFileBrowserResponse(BaseModel):
|
|
current_path: str = Field(default="")
|
|
display_path: str = Field(default="")
|
|
breadcrumbs: List[AuditFileBreadcrumb]
|
|
folders: List[AuditFileFolderItem]
|
|
files: List[AuditFileObjectItem]
|
|
next_token: Optional[str] = None
|