52 lines
1.1 KiB
Python
52 lines
1.1 KiB
Python
# app/schemas/character.py
|
|
|
|
from pydantic import BaseModel, constr, conint
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
# 캐릭터 생성 요청용
|
|
class CharacterCreate(BaseModel):
|
|
name: str
|
|
server: Optional[str] = None
|
|
job: Optional[str] = None
|
|
combat_power: Optional[int] = None # ← 추가
|
|
is_public: bool = False
|
|
|
|
# 캐릭터 응답용
|
|
class CharacterResponse(BaseModel):
|
|
id: int
|
|
name: str
|
|
server: Optional[str]
|
|
job: Optional[str]
|
|
combat_power: Optional[int] # ← 추가
|
|
is_public: bool
|
|
auto_synced_at: Optional[datetime]
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
class CharacterUpdateRequest(BaseModel):
|
|
name: constr(min_length=1)
|
|
server: constr(min_length=1)
|
|
power: conint(ge=0) # 0 이상 정수
|
|
is_public: bool
|
|
|
|
class CharacterDetailResponse(BaseModel):
|
|
id: int
|
|
name: str
|
|
server: str
|
|
combat_power: int
|
|
user_id: int
|
|
is_public: bool
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
model_config = {
|
|
"from_attributes": True
|
|
}
|
|
|
|
class CharacterOrderUpdate(BaseModel):
|
|
id: int
|
|
order: int
|