update
This commit is contained in:
+146
@@ -212,6 +212,152 @@ class UploadResponse(BaseModel):
|
||||
object_key: str
|
||||
|
||||
|
||||
class FeatureIconBase(BaseModel):
|
||||
title: str = Field(..., min_length=1, max_length=80)
|
||||
icon_url: str = Field(..., min_length=1, max_length=500)
|
||||
target_type: str = Field(default="link", pattern=r"^(link|app)$")
|
||||
target_url: str | None = Field(default=None, max_length=500)
|
||||
product_id: int | None = Field(default=None, ge=1)
|
||||
sort_order: int = Field(default=0, ge=0)
|
||||
is_active: bool = True
|
||||
|
||||
@field_validator("target_url")
|
||||
@classmethod
|
||||
def trim_target_url(cls, value: str | None) -> str | None:
|
||||
if value is None:
|
||||
return None
|
||||
value = value.strip()
|
||||
return value or None
|
||||
|
||||
|
||||
class FeatureIconCreate(FeatureIconBase):
|
||||
pass
|
||||
|
||||
|
||||
class FeatureIconUpdate(BaseModel):
|
||||
title: str | None = Field(default=None, min_length=1, max_length=80)
|
||||
icon_url: str | None = Field(default=None, min_length=1, max_length=500)
|
||||
target_type: str | None = Field(default=None, pattern=r"^(link|app)$")
|
||||
target_url: str | None = Field(default=None, max_length=500)
|
||||
product_id: int | None = Field(default=None, ge=1)
|
||||
sort_order: int | None = Field(default=None, ge=0)
|
||||
is_active: bool | None = None
|
||||
|
||||
@field_validator("target_url")
|
||||
@classmethod
|
||||
def trim_target_url(cls, value: str | None) -> str | None:
|
||||
if value is None:
|
||||
return None
|
||||
value = value.strip()
|
||||
return value or None
|
||||
|
||||
|
||||
class FeatureIcon(BaseModel):
|
||||
id: int
|
||||
temple_id: int
|
||||
title: str
|
||||
icon_url: str
|
||||
target_type: str
|
||||
target_url: str | None = None
|
||||
product_id: int | None = None
|
||||
product_name: str | None = None
|
||||
sort_order: int = 0
|
||||
is_active: bool = True
|
||||
|
||||
|
||||
class FeatureIconCopyRequest(BaseModel):
|
||||
source_temple_id: int = Field(..., ge=1)
|
||||
icon_ids: list[int] = Field(..., min_length=1)
|
||||
|
||||
|
||||
class AdSlotBase(BaseModel):
|
||||
name: str = Field(..., min_length=1, max_length=100)
|
||||
code: str = Field(..., min_length=1, max_length=80, pattern=r"^[a-zA-Z0-9_-]+$")
|
||||
description: str | None = Field(default=None, max_length=300)
|
||||
sort_order: int = Field(default=0, ge=0)
|
||||
is_active: bool = True
|
||||
|
||||
|
||||
class AdSlotCreate(AdSlotBase):
|
||||
pass
|
||||
|
||||
|
||||
class AdSlotUpdate(BaseModel):
|
||||
name: str | None = Field(default=None, min_length=1, max_length=100)
|
||||
code: str | None = Field(default=None, min_length=1, max_length=80, pattern=r"^[a-zA-Z0-9_-]+$")
|
||||
description: str | None = Field(default=None, max_length=300)
|
||||
sort_order: int | None = Field(default=None, ge=0)
|
||||
is_active: bool | None = None
|
||||
|
||||
|
||||
class AdSlot(BaseModel):
|
||||
id: int
|
||||
temple_id: int
|
||||
name: str
|
||||
code: str
|
||||
description: str | None = None
|
||||
sort_order: int = 0
|
||||
is_active: bool = True
|
||||
|
||||
|
||||
class AdBase(BaseModel):
|
||||
slot_id: int = Field(..., ge=1)
|
||||
title: str = Field(..., min_length=1, max_length=100)
|
||||
image_url: str = Field(..., min_length=1, max_length=500)
|
||||
target_type: str = Field(default="link", pattern=r"^(link|app)$")
|
||||
target_url: str | None = Field(default=None, max_length=500)
|
||||
product_id: int | None = Field(default=None, ge=1)
|
||||
sort_order: int = Field(default=0, ge=0)
|
||||
is_active: bool = True
|
||||
|
||||
@field_validator("target_url")
|
||||
@classmethod
|
||||
def trim_target_url(cls, value: str | None) -> str | None:
|
||||
if value is None:
|
||||
return None
|
||||
value = value.strip()
|
||||
return value or None
|
||||
|
||||
|
||||
class AdCreate(AdBase):
|
||||
pass
|
||||
|
||||
|
||||
class AdUpdate(BaseModel):
|
||||
slot_id: int | None = Field(default=None, ge=1)
|
||||
title: str | None = Field(default=None, min_length=1, max_length=100)
|
||||
image_url: str | None = Field(default=None, min_length=1, max_length=500)
|
||||
target_type: str | None = Field(default=None, pattern=r"^(link|app)$")
|
||||
target_url: str | None = Field(default=None, max_length=500)
|
||||
product_id: int | None = Field(default=None, ge=1)
|
||||
sort_order: int | None = Field(default=None, ge=0)
|
||||
is_active: bool | None = None
|
||||
|
||||
@field_validator("target_url")
|
||||
@classmethod
|
||||
def trim_target_url(cls, value: str | None) -> str | None:
|
||||
if value is None:
|
||||
return None
|
||||
value = value.strip()
|
||||
return value or None
|
||||
|
||||
|
||||
class Ad(BaseModel):
|
||||
id: int
|
||||
temple_id: int
|
||||
slot_id: int
|
||||
slot_name: str | None = None
|
||||
slot_code: str | None = None
|
||||
title: str
|
||||
image_url: str
|
||||
target_type: str
|
||||
target_url: str | None = None
|
||||
product_id: int | None = None
|
||||
product_name: str | None = None
|
||||
sort_order: int = 0
|
||||
is_active: bool = True
|
||||
|
||||
|
||||
class RitualServiceCreate(BaseModel):
|
||||
name: str = Field(..., min_length=1, max_length=120)
|
||||
description: str | None = Field(default=None, max_length=500)
|
||||
|
||||
Reference in New Issue
Block a user