Initial project commit

This commit is contained in:
2026-05-09 16:40:29 +08:00
commit 02b0259a9e
267 changed files with 54891 additions and 0 deletions
+82
View File
@@ -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