mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-20 20:39:55 +00:00
refactor: 重构前端组件和样式,添加AI助手功能 docs: 更新README文档,添加ruff代码检查说明 feat: 新增AI助手相关API和前端组件 chore: 更新.gitignore文件,添加ruff缓存配置 fix: 修复前端布局和设置相关的问题 perf: 优化代码结构和性能,移除冗余代码 test: 更新测试文件,移除编码声明 build: 更新依赖版本,调整requirements.txt
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
from typing import Any, Generic, TypeVar
|
|
|
|
from pydantic import BaseModel
|
|
from sqlalchemy.orm import DeclarativeBase
|
|
|
|
ModelType = TypeVar("ModelType", bound=DeclarativeBase)
|
|
SchemaType = TypeVar("SchemaType", bound=BaseModel)
|
|
|
|
|
|
class Serialize(Generic[ModelType, SchemaType]):
|
|
"""
|
|
序列化工具类,提供模型、Schema 和字典之间的转换功能
|
|
"""
|
|
|
|
@classmethod
|
|
def schema_to_model(cls, schema: type[SchemaType], model: type[ModelType]) -> ModelType:
|
|
"""
|
|
将 Pydantic Schema 转换为 SQLAlchemy 模型
|
|
|
|
参数:
|
|
- schema (Type[SchemaType]): Pydantic Schema 实例。
|
|
- model (Type[ModelType]): SQLAlchemy 模型类。
|
|
|
|
返回:
|
|
- ModelType: SQLAlchemy 模型实例。
|
|
|
|
异常:
|
|
- ValueError: 转换过程中可能抛出的异常。
|
|
"""
|
|
try:
|
|
return model(**cls.model_to_dict(model, schema))
|
|
except Exception as e:
|
|
raise ValueError(f"序列化失败: {e!s}")
|
|
|
|
@classmethod
|
|
def model_to_dict(cls, model: type[ModelType], schema: type[SchemaType]) -> dict[str, Any]:
|
|
"""
|
|
将 SQLAlchemy 模型转换为 Pydantic Schema
|
|
|
|
参数:
|
|
- model (Type[ModelType]): SQLAlchemy 模型实例。
|
|
- schema (Type[SchemaType]): Pydantic Schema 类。
|
|
|
|
返回:
|
|
- dict[str, Any]: 包含模型数据的字典。
|
|
|
|
异常:
|
|
- ValueError: 转换过程中可能抛出的异常。
|
|
"""
|
|
try:
|
|
return schema.model_validate(model).model_dump()
|
|
except Exception as e:
|
|
raise ValueError(f"反序列化失败: {e!s}")
|