Taskflow-App / src /models /audit_log.py
Tahasaif3's picture
Update src/models/audit_log.py
621a3cb verified
Raw History Blame Contribute Delete
1.54 kB
from sqlmodel import SQLModel, Field
from typing import Optional
from datetime import datetime
from sqlalchemy import Column, DateTime, JSON
import uuid
class AuditLogBase(SQLModel):
event_id: str = Field(index=True) # UUID for deduplication
event_type: str = Field(max_length=50) # created|updated|completed|deleted
user_id: str # String user identifier
task_id: int # Reference to the affected task
event_data: dict = Field(sa_column=Column(JSON)) # JSONB field for event data
timestamp: datetime = Field(sa_column=Column(DateTime(timezone=True)), default_factory=lambda: datetime.now(datetime.UTC))
class AuditLog(AuditLogBase, table=True):
"""
Persistent record of all task events for a user.
Contains id, event_id, event_type, user_id, task_id, event_data (JSONB), and timestamp.
"""
id: Optional[int] = Field(default=None, primary_key=True)
event_id: str = Field(index=True, unique=True) # Unique constraint for deduplication
event_type: str = Field(max_length=50) # created|updated|completed|deleted
user_id: str # String user identifier
task_id: int # Reference to the affected task
event_data: dict = Field(sa_column=Column(JSON)) # JSONB field for event data
timestamp: datetime = Field(sa_column=Column(DateTime(timezone=True)), default_factory=lambda: datetime.now(datetime.UTC))
class AuditLogCreate(AuditLogBase):
pass
class AuditLogRead(AuditLogBase):
id: int
timestamp: datetime
class Config:
from_attributes = True