61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
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
|
|
|
|
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
|
|
|
|
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
|
|
)
|
|
|
|
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
|
|
|
|
class AccountUpdateRequest(BaseModel):
|
|
account_id: int
|
|
account_data: AccountUpdate
|
|
|
|
class AccountDeleteRequest(BaseModel):
|
|
account_id: int |