123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- from datetime import datetime
- from typing import Optional, Generic, TypeVar
- from sqlalchemy import Column, Integer, DateTime, Boolean
- from sqlalchemy.ext.declarative import as_declarative, declared_attr
- from pydantic import BaseModel as PydanticBaseModel
- from ..database import Base
- T = TypeVar('T')
- @as_declarative()
- class BaseModel(Base):
- """
- SQLAlchemy ORM 基础模型类
- """
- __abstract__ = True
- @declared_attr
- def __tablename__(cls) -> str:
- return cls.__name__.lower()
- id = Column(Integer, primary_key=True, index=True)
- class CreateModel:
- """
- 创建模型Mixin,包含创建相关字段
- """
- create_at = Column(DateTime, default=datetime.now, comment='创建时间')
- create_by = Column(Integer, comment='创建者ID')
- class UpdateModel:
- """
- 更新模型Mixin,包含更新相关字段
- """
- update_at = Column(DateTime, onupdate=datetime.now, comment='更新时间')
- update_by = Column(Integer, comment='更新者ID')
- version = Column(Integer, default=1, comment='版本号')
- class DeleteModel:
- """
- 删除模型Mixin,包含删除相关字段
- """
- is_deleted = Column(Boolean, default=False, comment='是否删除')
- delete_at = Column(DateTime, comment='删除时间')
- delete_by = Column(Integer, comment='删除者ID')
|