feat(phase2): shared/ 共享层迁移
- shared/: enums/constants/pagination/base_model/base_db/base_repository/base_service - apps/constants 与 apps/models/base_model、base_db 改为垫片 - 新增 pagination 单元测试 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# +======================================================================
|
||||
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
|
||||
# +----------------------------------------------------------------------
|
||||
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
|
||||
# | 开源协议: Apache-2.0
|
||||
# +======================================================================
|
||||
# 由 apps/models/base_db.py 迁移而来。
|
||||
|
||||
"""
|
||||
数据库操作基类模块
|
||||
=============================================================
|
||||
|
||||
提供数据库模型的通用操作方法,包括:
|
||||
- 单条数据保存(save):add + flush,不提交事务
|
||||
- 多条数据批量保存(save_all):add_all + flush,不提交事务
|
||||
- 数据删除(delete):delete + flush,不提交事务
|
||||
|
||||
事务边界由 db_session_middleware 统一管理:
|
||||
- 请求成功且为写操作 → 自动 commit
|
||||
- 请求异常 → 自动 rollback
|
||||
- 业务代码无需关心事务提交
|
||||
"""
|
||||
|
||||
import logging
|
||||
|
||||
from core.database import get_db_session
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class base_db:
|
||||
__abstract__ = True
|
||||
|
||||
def save(self):
|
||||
"""
|
||||
保存当前实例到数据库
|
||||
|
||||
将对象添加到会话并 flush(发送 SQL 到数据库获取自增 ID),
|
||||
但不提交事务。事务由中间件统一管理。
|
||||
|
||||
Returns:
|
||||
self: 当前实例,支持链式调用。通过 self.id 可获取自增主键。
|
||||
"""
|
||||
db = get_db_session()
|
||||
db.add(self)
|
||||
db.flush()
|
||||
return self
|
||||
|
||||
@staticmethod
|
||||
def save_all(*args):
|
||||
"""批量保存多个实例到数据库"""
|
||||
if not args:
|
||||
return
|
||||
db = get_db_session()
|
||||
db.add_all(args)
|
||||
db.flush()
|
||||
|
||||
def delete(self):
|
||||
"""从数据库删除当前实例"""
|
||||
db = get_db_session()
|
||||
db.delete(self)
|
||||
db.flush()
|
||||
return True
|
||||
Reference in New Issue
Block a user