first commit
This commit is contained in:
commit
34ea15a54d
246 changed files with 18660 additions and 0 deletions
170
backend/app/schemas/domain.py
Normal file
170
backend/app/schemas/domain.py
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, EmailStr, Field
|
||||
|
||||
from app.models.enums import AdminRole, EventType, PlatformKind
|
||||
|
||||
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str = "bearer"
|
||||
|
||||
|
||||
class LoginRequest(BaseModel):
|
||||
email: EmailStr
|
||||
password: str
|
||||
|
||||
|
||||
class SubscribeRequest(BaseModel):
|
||||
email: EmailStr
|
||||
neighborhood: str | None = Field(default=None, max_length=120)
|
||||
|
||||
|
||||
class SubscriberPublic(BaseModel):
|
||||
id: int
|
||||
email: str
|
||||
neighborhood: str | None
|
||||
created_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class AdminUserPublic(BaseModel):
|
||||
id: int
|
||||
email: str
|
||||
role: AdminRole
|
||||
created_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class AdminUserCreate(BaseModel):
|
||||
email: EmailStr
|
||||
password: str = Field(min_length=8, max_length=128)
|
||||
role: AdminRole = AdminRole.editor
|
||||
|
||||
|
||||
class PlatformLinkPublic(BaseModel):
|
||||
id: int
|
||||
kind: PlatformKind
|
||||
label: str
|
||||
url: str
|
||||
sort_order: int
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class PlatformLinkCreate(BaseModel):
|
||||
kind: PlatformKind
|
||||
label: str = Field(max_length=120)
|
||||
url: str = Field(max_length=512)
|
||||
sort_order: int = 0
|
||||
is_active: bool = True
|
||||
|
||||
|
||||
class PlatformLinkUpdate(BaseModel):
|
||||
kind: PlatformKind | None = None
|
||||
label: str | None = Field(default=None, max_length=120)
|
||||
url: str | None = Field(default=None, max_length=512)
|
||||
sort_order: int | None = None
|
||||
is_active: bool | None = None
|
||||
|
||||
|
||||
class EditionTicketsPublic(BaseModel):
|
||||
bookmyshow: str | None = None
|
||||
district: str | None = None
|
||||
instagram: str | None = None
|
||||
|
||||
|
||||
class MediaAssetPublic(BaseModel):
|
||||
id: int
|
||||
url: str
|
||||
thumb_url: str | None = None
|
||||
caption: str | None
|
||||
sort_order: int
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class ClickSummaryItem(BaseModel):
|
||||
link_kind: str
|
||||
count: int
|
||||
|
||||
|
||||
class OutboundClickPublic(BaseModel):
|
||||
id: int
|
||||
link_kind: str
|
||||
destination_url: str
|
||||
edition_id: int | None
|
||||
created_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class EventEditionPublic(BaseModel):
|
||||
id: int
|
||||
title: str
|
||||
slug: str
|
||||
event_type: EventType
|
||||
city: str
|
||||
venue_name: str | None
|
||||
event_date: datetime | None
|
||||
description: str | None
|
||||
is_featured: bool
|
||||
cover_image_url: str | None
|
||||
cover_thumb_url: str | None = None
|
||||
tickets: EditionTicketsPublic
|
||||
meta_description: str | None
|
||||
media: list[MediaAssetPublic]
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class EventEditionAdmin(EventEditionPublic):
|
||||
is_published: bool
|
||||
sort_order: int
|
||||
|
||||
|
||||
class EventEditionCreate(BaseModel):
|
||||
title: str = Field(max_length=200)
|
||||
slug: str = Field(max_length=200)
|
||||
event_type: EventType
|
||||
venue_name: str | None = Field(default=None, max_length=200)
|
||||
event_date: datetime | None = None
|
||||
description: str | None = None
|
||||
is_published: bool = False
|
||||
is_featured: bool = False
|
||||
sort_order: int = 0
|
||||
bookmyshow_url: str | None = Field(default=None, max_length=512)
|
||||
district_url: str | None = Field(default=None, max_length=512)
|
||||
instagram_url: str | None = Field(default=None, max_length=512)
|
||||
meta_description: str | None = Field(default=None, max_length=320)
|
||||
|
||||
|
||||
class EventEditionUpdate(BaseModel):
|
||||
title: str | None = Field(default=None, max_length=200)
|
||||
slug: str | None = Field(default=None, max_length=200)
|
||||
event_type: EventType | None = None
|
||||
venue_name: str | None = None
|
||||
event_date: datetime | None = None
|
||||
description: str | None = None
|
||||
is_published: bool | None = None
|
||||
is_featured: bool | None = None
|
||||
sort_order: int | None = None
|
||||
bookmyshow_url: str | None = Field(default=None, max_length=512)
|
||||
district_url: str | None = Field(default=None, max_length=512)
|
||||
instagram_url: str | None = Field(default=None, max_length=512)
|
||||
meta_description: str | None = Field(default=None, max_length=320)
|
||||
|
||||
|
||||
class SiteConfigPublic(BaseModel):
|
||||
city: str = "Bengaluru"
|
||||
tagline: str
|
||||
platform_links: list[PlatformLinkPublic]
|
||||
featured_edition: EventEditionPublic | None
|
||||
recent_editions: list[EventEditionPublic]
|
||||
|
||||
|
||||
class MediaReorderItem(BaseModel):
|
||||
id: int
|
||||
sort_order: int
|
||||
Loading…
Add table
Add a link
Reference in a new issue