16 lines
862 B
Python
16 lines
862 B
Python
"""
|
|
@model AuditBaseMixin (Backend/app/models/audit_base.py)
|
|
@purpose Reusable SQLAlchemy audit mixin providing standardized timestamps, user tracking, soft delete, and optimistic locking version counters across all 3 databases.
|
|
"""
|
|
from sqlalchemy import Column, DateTime, String, Integer, func
|
|
from sqlalchemy.orm import declarative_mixin
|
|
|
|
@declarative_mixin
|
|
class AuditBaseMixin:
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
|
|
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)
|
|
created_by = Column(String(36), nullable=True)
|
|
updated_by = Column(String(36), nullable=True)
|
|
deleted_at = Column(DateTime(timezone=True), nullable=True)
|
|
deleted_by = Column(String(36), nullable=True)
|
|
version = Column(Integer, default=1, nullable=False)
|