97 lines
1.8 KiB
Python
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 |