Files
AutonetSellCar/temp_solution_schemas.py

199 lines
5.2 KiB
Python

from pydantic import BaseModel
from datetime import datetime
from typing import Optional, List, Any
# ==================== Image Schemas ====================
class ImageResponse(BaseModel):
id: int
image_url: str
caption: Optional[str] = None
class Config:
from_attributes = True
# ==================== Solution Schemas ====================
class SolutionBase(BaseModel):
title_ko: str
title_en: Optional[str] = None
title_ja: Optional[str] = None
title_zh: Optional[str] = None
subtitle_ko: Optional[str] = None
subtitle_en: Optional[str] = None
subtitle_ja: Optional[str] = None
subtitle_zh: Optional[str] = None
description_ko: Optional[str] = None
description_en: Optional[str] = None
description_ja: Optional[str] = None
description_zh: Optional[str] = None
features_ko: Optional[str] = None
features_en: Optional[str] = None
features_ja: Optional[str] = None
features_zh: Optional[str] = None
icon: Optional[str] = None
color: Optional[str] = None
main_image: Optional[str] = None
is_active: bool = True
display_order: int = 0
class SolutionCreate(SolutionBase):
pass
class SolutionUpdate(BaseModel):
title_ko: Optional[str] = None
title_en: Optional[str] = None
title_ja: Optional[str] = None
title_zh: Optional[str] = None
subtitle_ko: Optional[str] = None
subtitle_en: Optional[str] = None
subtitle_ja: Optional[str] = None
subtitle_zh: Optional[str] = None
description_ko: Optional[str] = None
description_en: Optional[str] = None
description_ja: Optional[str] = None
description_zh: Optional[str] = None
features_ko: Optional[str] = None
features_en: Optional[str] = None
features_ja: Optional[str] = None
features_zh: Optional[str] = None
icon: Optional[str] = None
color: Optional[str] = None
main_image: Optional[str] = None
is_active: Optional[bool] = None
display_order: Optional[int] = None
class SolutionImageResponse(BaseModel):
id: int
image_url: str
caption_ko: Optional[str] = None
caption_en: Optional[str] = None
caption_ja: Optional[str] = None
caption_zh: Optional[str] = None
display_order: int = 0
class Config:
from_attributes = True
class SolutionResponse(SolutionBase):
id: int
created_at: datetime
updated_at: datetime
images: List[SolutionImageResponse] = []
class Config:
from_attributes = True
class SolutionLocalizedResponse(BaseModel):
id: int
title: str
subtitle: Optional[str]
description: Optional[str]
features: List[str]
icon: Optional[str]
color: Optional[str]
main_image: Optional[str]
images: List[Any] = []
class Config:
from_attributes = True
# ==================== Product Schemas ====================
class ProductBase(BaseModel):
name_ko: str
name_en: Optional[str] = None
name_ja: Optional[str] = None
name_zh: Optional[str] = None
category_ko: Optional[str] = None
category_en: Optional[str] = None
category_ja: Optional[str] = None
category_zh: Optional[str] = None
description_ko: Optional[str] = None
description_en: Optional[str] = None
description_ja: Optional[str] = None
description_zh: Optional[str] = None
detail_ko: Optional[str] = None
detail_en: Optional[str] = None
detail_ja: Optional[str] = None
detail_zh: Optional[str] = None
specifications: Optional[str] = None
icon: Optional[str] = None
main_image: Optional[str] = None
is_active: bool = True
display_order: int = 0
class ProductCreate(ProductBase):
pass
class ProductUpdate(BaseModel):
name_ko: Optional[str] = None
name_en: Optional[str] = None
name_ja: Optional[str] = None
name_zh: Optional[str] = None
category_ko: Optional[str] = None
category_en: Optional[str] = None
category_ja: Optional[str] = None
category_zh: Optional[str] = None
description_ko: Optional[str] = None
description_en: Optional[str] = None
description_ja: Optional[str] = None
description_zh: Optional[str] = None
detail_ko: Optional[str] = None
detail_en: Optional[str] = None
detail_ja: Optional[str] = None
detail_zh: Optional[str] = None
specifications: Optional[str] = None
icon: Optional[str] = None
main_image: Optional[str] = None
is_active: Optional[bool] = None
display_order: Optional[int] = None
class ProductImageResponse(BaseModel):
id: int
image_url: str
caption_ko: Optional[str] = None
caption_en: Optional[str] = None
caption_ja: Optional[str] = None
caption_zh: Optional[str] = None
display_order: int = 0
class Config:
from_attributes = True
class ProductResponse(ProductBase):
id: int
created_at: datetime
updated_at: datetime
images: List[ProductImageResponse] = []
class Config:
from_attributes = True
class ProductLocalizedResponse(BaseModel):
id: int
name: str
category: Optional[str]
description: Optional[str]
detail: Optional[str]
specifications: Optional[str]
icon: Optional[str]
main_image: Optional[str]
images: List[Any] = []
class Config:
from_attributes = True