Files
railway_cloud/app/schemas/account.py

81 lines
2.2 KiB
Python

from pydantic import BaseModel, Field, ConfigDict, field_serializer
from typing import Optional, List, Any
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
max_variation: Optional[int] = 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,
max_variation=account.max_variation,
)
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
# 统一响应格式
class AccountApiResponse(BaseModel):
"""账号API统一响应格式"""
code: int = 0
message: str
data: Optional[Any] = None
class AccountListResponse(BaseModel):
"""账号列表响应格式"""
code: int = 0
message: str
total: int
data: List[AccountResponse] = []