提交
This commit is contained in:
1 parent
d336fd0226
commit
2e9d020d50
3454 files changed
+878963
-319
No files matched your search
@@ -0,0 +1,63 @@
|
||||
"""基础模型类"""
|
||||
from datetime import datetime
|
||||
from typing import Optional, Any
|
||||
from sqlalchemy import Column, String, DateTime, Integer, func
|
||||
from sqlalchemy.ext.declarative import declared_attr
|
||||
|
||||
from app.core.database import Base
|
||||
|
||||
|
||||
class BaseModel(Base):
|
||||
"""所有模型的基类,包含通用字段"""
|
||||
__abstract__ = True
|
||||
|
||||
@declared_attr
|
||||
def __tablename__(cls) -> str:
|
||||
"""自动生成表名"""
|
||||
import re
|
||||
name = cls.__name__
|
||||
# 驼峰转下划线
|
||||
return re.sub(r'(?<!^)(?=[A-Z])', '_', name).lower()
|
||||
|
||||
id = Column(String(32), primary_key=True, comment="主键ID")
|
||||
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
|
||||
create_by = Column(String(32), nullable=True, comment="创建人ID")
|
||||
create_name = Column(String(100), nullable=True, comment="创建人姓名")
|
||||
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
|
||||
update_by = Column(String(32), nullable=True, comment="修改人ID")
|
||||
|
||||
def to_dict(self, exclude: list = None) -> dict:
|
||||
"""转换为字典"""
|
||||
if exclude is None:
|
||||
exclude = []
|
||||
result = {}
|
||||
for column in self.__table__.columns:
|
||||
if column.name not in exclude:
|
||||
value = getattr(self, column.name)
|
||||
if isinstance(value, datetime):
|
||||
result[column.name] = value.strftime("%Y-%m-%d %H:%M:%S")
|
||||
else:
|
||||
result[column.name] = value
|
||||
return result
|
||||
|
||||
|
||||
class SoftDeleteModel(BaseModel):
|
||||
"""支持软删除的模型基类"""
|
||||
__abstract__ = True
|
||||
|
||||
is_del = Column(Integer, default=0, comment="是否删除: 0-否, 1-是")
|
||||
|
||||
@classmethod
|
||||
def get_active(cls, db, **kwargs):
|
||||
"""获取未删除的记录"""
|
||||
return db.query(cls).filter(cls.is_del == 0, **kwargs)
|
||||
|
||||
def soft_delete(self, db):
|
||||
"""软删除"""
|
||||
self.is_del = 1
|
||||
db.commit()
|
||||
|
||||
def restore(self, db):
|
||||
"""恢复删除"""
|
||||
self.is_del = 0
|
||||
db.commit()
|
||||
Reference in new issue
Block a user