O2Sound_ver2_final/backend/app/presentation/schemas/useritems_schema.py

97 lines
1.8 KiB
Python

from pydantic import BaseModel, ConfigDict
from typing import Dict, Optional
from uuid import UUID
from datetime import datetime
# === GET ===
class GetUserItemsRequest(BaseModel):
user_id: str
class ItemDetail(BaseModel):
id: UUID
name: str
address: str
url: str
phone_number: Optional[str] = None
created_at: datetime
thumnail_url: Optional[str] = None
class GetUserItemsResponse(BaseModel):
data: Dict[str, ItemDetail]
# === PUT ===
class PutUserItemRequest(BaseModel):
id: str
item_id: UUID
name: str
address: str
url: str
phone_number: Optional[str] = None
thumnail_url: Optional[str] = None
class PutUserItemResponse(BaseModel):
id: UUID
name: str
address: str
url: str
phone_number: Optional[str]
created_at: datetime
thumnail_url: Optional[str]
# === DELETE ===
class DeleteUserItemRequest(BaseModel):
id: UUID
item_id: UUID
class DeleteUserItemResponse(BaseModel):
success: bool
item_id: UUID
# === 공통 에러 ===
class ErrorResponse(BaseModel):
error_code: str
error_message: str
class Item(BaseModel):
model_config = ConfigDict(from_attributes=True)
item_id: UUID
name: str
address: str
url: str
phone_number: str
thumbnail_url: str
hashtags: list[str]
# 업체(items) 가져오기
class GetItemsRequest(BaseModel):
id: UUID
class GetItemsResponse(BaseModel):
model_config = ConfigDict(from_attributes=True)
total_count: int
items: list[Item]
class UpdateItemRequest(BaseModel):
id: UUID
item_id: UUID
name: str
address: str
url: str
phone_number: Optional[str] = None
thumbnail_url: Optional[str] = None
class UpdateItemResponse(BaseModel):
success: bool
item_id: UUID