from pydantic import BaseModel, Field, ConfigDict, field_serializer from typing import Optional from datetime import datetime class AccountBase(BaseModel): username: str password: str status: Optional[int] = 1 today_updated: Optional[int] = 0 project_name: Optional[str] = None update_time: Optional[str] = None class AccountCreate(AccountBase): pass class AccountUpdate(BaseModel): username: Optional[str] = None password: Optional[str] = None status: Optional[int] = None today_updated: Optional[int] = None project_name: Optional[str] = None update_time: Optional[str] = None class AccountResponse(AccountBase): account_id: int created_at: datetime updated_at: datetime model_config = ConfigDict( from_attributes=True ) @classmethod def from_orm_account(cls, account): """从ORM对象创建响应对象""" return cls( account_id=account.id, username=account.username, password=account.password, status=account.status, today_updated=account.today_updated, project_name=account.project_name, created_at=account.created_at, updated_at=account.updated_at, update_time=account.update_time ) class AccountListRequest(BaseModel): skip: Optional[int] = 0 limit: Optional[int] = 100 class AccountGetRequest(BaseModel): account_id: Optional[int] = None username: Optional[str] = None project_name: Optional[str] = None status: Optional[int] = None today_updated: Optional[int] = None update_time: Optional[str] = None class AccountUpdateRequest(BaseModel): account_id: int account_data: AccountUpdate class AccountDeleteRequest(BaseModel): account_id: int