ForgeFlow-ERP/backend/app/models/base.py
2026-06-12 16:00:56 +08:00

28 lines
872 B
Python

from __future__ import annotations
from datetime import datetime
from sqlalchemy import event
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
@event.listens_for(Base, "before_insert", propagate=True)
def set_audit_fields_before_insert(mapper, connection, target) -> None:
_ = mapper, connection
now = datetime.now()
if hasattr(target, "created_at") and getattr(target, "created_at", None) is None:
setattr(target, "created_at", now)
if hasattr(target, "updated_at") and getattr(target, "updated_at", None) is None:
setattr(target, "updated_at", now)
@event.listens_for(Base, "before_update", propagate=True)
def set_audit_fields_before_update(mapper, connection, target) -> None:
_ = mapper, connection
if hasattr(target, "updated_at"):
setattr(target, "updated_at", datetime.now())