覆盖所有模块: - api 层:17 个路由文件,每个接口标注用途、参数、返回值、权限 - services 层:18 个服务文件,每个方法标注作用、参数、返回值、调用方 - repositories 层:13 个仓储文件,每个方法标注查询逻辑和被调用方 - schemas 层:11 个请求/响应体文件,每个字段标注业务含义 - core 层:config、security、exceptions、responses、error_codes - models 层:19 个 ORM 模型类,每个表标注业务含义和关联关系 - scripts:bootstrap_data、smoke_check - migrations:env.py 和版本迁移文件 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
"""系统配置模块 Repository 层
|
||
|
||
负责系统配置项(SystemConfig)的增删改查操作,
|
||
用于管理系统运行时的键值对配置。
|
||
被 ConfigService(配置管理服务)调用。
|
||
"""
|
||
|
||
from sqlalchemy import select
|
||
from sqlalchemy.orm import Session
|
||
|
||
from backend.app.models.system import SystemConfig
|
||
|
||
|
||
class ConfigRepository:
|
||
"""系统配置数据仓储
|
||
|
||
封装系统配置项的按键查询、创建和更新操作。
|
||
被 ConfigService(配置管理服务)调用。
|
||
"""
|
||
|
||
def get_by_key(self, session: Session, config_key: str) -> SystemConfig | None:
|
||
"""根据配置键查询系统配置
|
||
|
||
参数:
|
||
session: 数据库会话
|
||
config_key: 配置键名
|
||
|
||
返回:
|
||
匹配的配置对象,不存在则返回 None
|
||
"""
|
||
stmt = select(SystemConfig).where(SystemConfig.config_key == config_key)
|
||
return session.execute(stmt).scalar_one_or_none()
|
||
|
||
def create_config(self, session: Session, payload: dict) -> SystemConfig:
|
||
"""创建新配置项
|
||
|
||
参数:
|
||
session: 数据库会话
|
||
payload: 配置数据字典,包含 config_key / config_value / config_name 等字段
|
||
|
||
返回:
|
||
新创建的配置对象
|
||
"""
|
||
config = SystemConfig(**payload)
|
||
session.add(config)
|
||
session.flush()
|
||
return config
|
||
|
||
def update_config(self, config: SystemConfig, payload: dict) -> SystemConfig:
|
||
"""更新配置项信息
|
||
|
||
参数:
|
||
config: 待更新的配置对象(已从数据库加载)
|
||
payload: 更新数据字典,包含 config_value / config_name / remark / status
|
||
|
||
返回:
|
||
更新后的配置对象
|
||
"""
|
||
config.config_value = payload["config_value"]
|
||
config.config_name = payload["config_name"]
|
||
config.remark = payload.get("remark")
|
||
config.status = payload.get("status", 1)
|
||
return config
|