""" MySQL数据模型定义 提供MySQL数据库表的结构化模型定义 """ from typing import Optional, Dict, Any, List from dataclasses import dataclass from datetime import datetime @dataclass class UserModel: """用户模型""" id: Optional[int] = None name: str = "" email: str = "" age: int = 0 created_at: Optional[datetime] = None updated_at: Optional[datetime] = None def to_dict(self) -> Dict[str, Any]: """转换为字典""" return { 'id': self.id, 'name': self.name, 'email': self.email, 'age': self.age, 'created_at': self.created_at.isoformat() if self.created_at else None, 'updated_at': self.updated_at.isoformat() if self.updated_at else None } @classmethod def from_dict(cls, data: Dict[str, Any]) -> 'UserModel': """从字典创建实例""" return cls( id=data.get('id'), name=data.get('name', ''), email=data.get('email', ''), age=data.get('age', 0), created_at=datetime.fromisoformat(data['created_at']) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data['updated_at']) if data.get('updated_at') else None ) @dataclass class TestTableModel: """测试表模型""" id: Optional[int] = None name: str = "" description: Optional[str] = None status: str = "active" created_at: Optional[datetime] = None def to_dict(self) -> Dict[str, Any]: """转换为字典""" return { 'id': self.id, 'name': self.name, 'description': self.description, 'status': self.status, 'created_at': self.created_at.isoformat() if self.created_at else None } @classmethod def from_dict(cls, data: Dict[str, Any]) -> 'TestTableModel': """从字典创建实例""" return cls( id=data.get('id'), name=data.get('name', ''), description=data.get('description'), status=data.get('status', 'active'), created_at=datetime.fromisoformat(data['created_at']) if data.get('created_at') else None ) @dataclass class BasisOfPreparationModel: """编制依据模型""" id: Optional[int] = None title: str = "" content: Optional[str] = None category: Optional[str] = None status: str = "current" created_at: Optional[datetime] = None updated_at: Optional[datetime] = None def to_dict(self) -> Dict[str, Any]: """转换为字典""" return { 'id': self.id, 'title': self.title, 'content': self.content, 'category': self.category, 'status': self.status, 'created_at': self.created_at.isoformat() if self.created_at else None, 'updated_at': self.updated_at.isoformat() if self.updated_at else None } @classmethod def from_dict(cls, data: Dict[str, Any]) -> 'BasisOfPreparationModel': """从字典创建实例""" return cls( id=data.get('id'), title=data.get('title', ''), content=data.get('content'), category=data.get('category'), status=data.get('status', 'current'), created_at=datetime.fromisoformat(data['created_at']) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data['updated_at']) if data.get('updated_at') else None ) @dataclass class DocCallbackTaskIdModel: """文件上传记录模型""" id: Optional[int] = None file_name: str = "" file_id: str = "" callback_task_id: str = "" upload_date: Optional[str] = None created_at: Optional[datetime] = None def to_dict(self) -> Dict[str, Any]: return { 'id': self.id, 'file_name': self.file_name, 'file_id': self.file_id, 'callback_task_id': self.callback_task_id, 'upload_date': self.upload_date, 'created_at': self.created_at.isoformat() if self.created_at else None, } @classmethod def from_dict(cls, data: Dict[str, Any]) -> 'DocCallbackTaskIdModel': return cls( id=data.get('id'), file_name=data.get('file_name', ''), file_id=data.get('file_id', ''), callback_task_id=data.get('callback_task_id', ''), upload_date=str(data['upload_date']) if data.get('upload_date') else None, created_at=datetime.fromisoformat(data['created_at']) if data.get('created_at') else None, ) __all__ = [ "UserModel", "TestTableModel", "BasisOfPreparationModel", "DocCallbackTaskIdModel" ]