Files
FastapiAdmin/backend/app/api/v1/module_system/version/crud.py
T
zhangtao 700d76ad5a feat(model): 添加status字段表示启用状态
- 在myapp模块的ApplicationModel中新增status字段,标识应用是否启用
- 在demo模块的DemoModel中新增status字段,标识示例条目是否启用
- 修改代码生成模块相关模型,替换BaseMixin为CreatorMixin
- 删除代码生成模块中Python模板相关文件与Vue前端代码模板,优化代码结构和清理无用模板文件
2025-09-17 01:33:53 +08:00

96 lines
3.5 KiB
Python

# -*- coding: utf-8 -*-
from typing import Dict, List, Optional, Sequence
from datetime import datetime
from app.core.base_crud import CRUDBase
from app.api.v1.module_system.auth.schema import AuthSchema
from .model import VersionModel
from .schema import VersionCreateSchema, VersionUpdateSchema
class VersionCRUD(CRUDBase[VersionModel, VersionCreateSchema, VersionUpdateSchema]):
"""版本模块数据层"""
def __init__(self, auth: AuthSchema) -> None:
"""初始化版本CRUD"""
self.auth = auth
super().__init__(model=VersionModel, auth=auth)
async def get_by_id_crud(self, id: int) -> Optional[VersionModel]:
"""根据id获取版本信息
:param id: 版本ID
:return: 版本信息
"""
return await self.get(id=id)
async def get_list_crud(self, search: Optional[Dict] = None, order_by: Optional[List[Dict[str, str]]] = None) -> Sequence[VersionModel]:
"""获取版本列表
:param search: 搜索条件
:param order_by: 排序字段
:return: 版本列表
"""
return await self.list(search=search or {}, order_by=order_by or [])
async def create_crud(self, data: VersionCreateSchema) -> Optional[VersionModel]:
"""创建版本
:param data: 版本创建数据
:return: 创建的版本
"""
# 处理 released_at 字段,确保字符串转换为 datetime 对象
data_dict = data.model_dump()
if data_dict.get('released_at') and isinstance(data_dict['released_at'], str):
try:
data_dict['released_at'] = datetime.strptime(data_dict['released_at'], '%Y-%m-%d %H:%M:%S')
except ValueError:
# 如果格式不正确,让数据库层处理错误
pass
return await self.create(data=data_dict)
async def update_crud(self, id: int, data: VersionUpdateSchema) -> Optional[VersionModel]:
"""更新版本
:param id: 版本ID
:param data: 版本更新数据
:return: 更新的版本
"""
# 处理 released_at 字段,确保字符串转换为 datetime 对象
data_dict = data.model_dump(exclude_unset=True, exclude={"id"})
if data_dict.get('released_at') and isinstance(data_dict['released_at'], str):
try:
data_dict['released_at'] = datetime.strptime(data_dict['released_at'], '%Y-%m-%d %H:%M:%S')
except ValueError:
# 如果格式不正确,让数据库层处理错误
pass
return await self.update(id=id, data=data_dict)
async def delete_crud(self, ids: List[int]) -> None:
"""批量删除版本
:param ids: 版本ID列表
"""
return await self.delete(ids=ids)
async def get_by_number_crud(self, version_number: str) -> Optional[VersionModel]:
"""根据版本号获取版本
:param version_number: 版本号
:return: 版本信息
"""
return await self.get(version_number=version_number)
async def get_by_status_crud(self, search: Optional[Dict] = None, order_by: Optional[List[Dict[str, str]]] = None) -> Sequence[VersionModel]:
"""根据状态获取版本列表
:param search: 搜索条件
:param order_by: 排序字段
:return: 版本列表
"""
if search is None:
search = {}
return await self.list(search=search, order_by=order_by or [])