mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-28 15:09:57 +00:00
- 在myapp模块的ApplicationModel中新增status字段,标识应用是否启用 - 在demo模块的DemoModel中新增status字段,标识示例条目是否启用 - 修改代码生成模块相关模型,替换BaseMixin为CreatorMixin - 删除代码生成模块中Python模板相关文件与Vue前端代码模板,优化代码结构和清理无用模板文件
96 lines
3.5 KiB
Python
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 []) |