Initial project commit
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from app.schemas.tag import TagOut
|
||||
from app.schemas.user import UserInfo
|
||||
|
||||
|
||||
class SpotCreate(BaseModel):
|
||||
title: str
|
||||
city: str
|
||||
longitude: float
|
||||
latitude: float
|
||||
description: str | None = None
|
||||
transport: str | None = None
|
||||
best_time: str | None = None
|
||||
difficulty: str | None = None
|
||||
is_free: bool = True
|
||||
price_min: float | None = None
|
||||
price_max: float | None = None
|
||||
image_urls: list[str] = []
|
||||
tag_ids: list[int] = []
|
||||
|
||||
|
||||
class SpotUpdate(BaseModel):
|
||||
title: str | None = None
|
||||
city: str | None = None
|
||||
longitude: float | None = None
|
||||
latitude: float | None = None
|
||||
description: str | None = None
|
||||
transport: str | None = None
|
||||
best_time: str | None = None
|
||||
difficulty: str | None = None
|
||||
is_free: bool | None = None
|
||||
price_min: float | None = None
|
||||
price_max: float | None = None
|
||||
tag_ids: list[int] | None = None
|
||||
|
||||
|
||||
class SpotImageOut(BaseModel):
|
||||
id: int
|
||||
image_url: str
|
||||
is_cover: bool
|
||||
sort_order: int
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class SpotBrief(BaseModel):
|
||||
id: int
|
||||
title: str
|
||||
city: str
|
||||
longitude: float | None = None
|
||||
latitude: float | None = None
|
||||
cover_image_url: str | None = None
|
||||
audit_status: str
|
||||
avg_rating: float | None = None
|
||||
favorite_count: int = 0
|
||||
is_free: bool = True
|
||||
price_min: float | None = None
|
||||
price_max: float | None = None
|
||||
created_at: datetime | None = None
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class SpotDetail(SpotBrief):
|
||||
description: str | None = None
|
||||
transport: str | None = None
|
||||
best_time: str | None = None
|
||||
difficulty: str | None = None
|
||||
creator: UserInfo | None = None
|
||||
images: list[SpotImageOut] = []
|
||||
tags: list[TagOut] = []
|
||||
rating_count: int = 0
|
||||
is_favorited: bool = False
|
||||
|
||||
|
||||
class SpotImageCreate(BaseModel):
|
||||
image_url: str
|
||||
is_cover: bool = False
|
||||
sort_order: int = 0
|
||||
Reference in New Issue
Block a user