ifixkart-backend/app/models/audit_base.py

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)