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