fix: serialize media publishing decisions

This commit is contained in:
ik
2026-09-22 07:58:38 +07:00
parent f3fb5868df
commit 0eb151f5a7
9 changed files with 365 additions and 95 deletions
+32 -2
View File
@@ -486,7 +486,37 @@ class AdminMediaReviewOut(BaseModel):
class AdminMediaDecision(BaseModel):
note: str = Field(min_length=1, max_length=1000)
asset_ids: list[str] = Field(min_length=1, max_length=500)
expected_version: int = Field(ge=1)
@field_validator("asset_ids")
@classmethod
def validate_asset_ids(cls, value: list[str]) -> list[str]:
if len(set(value)) != len(value) or any(len(item) != 64 or any(char not in "0123456789abcdef" for char in item) for item in value):
raise ValueError("asset_ids must contain unique SHA-256 ids")
return value
class AdminMediaRollback(AdminMediaDecision):
asset_url: str = Field(min_length=1, max_length=2000)
class AdminMediaPreview(BaseModel):
asset_ids: list[str] = Field(min_length=1, max_length=500)
expected_version: int | None = Field(default=None, ge=1)
@field_validator("asset_ids")
@classmethod
def validate_asset_ids(cls, value: list[str]) -> list[str]:
if len(set(value)) != len(value) or any(len(item) != 64 or any(char not in "0123456789abcdef" for char in item) for item in value):
raise ValueError("asset_ids must contain unique SHA-256 ids")
return value
class AdminMediaRollback(BaseModel):
note: str = Field(min_length=1, max_length=1000)
asset_id: str = Field(min_length=64, max_length=64)
expected_version: int = Field(ge=1)
@field_validator("asset_id")
@classmethod
def validate_asset_id(cls, value: str) -> str:
if any(char not in "0123456789abcdef" for char in value):
raise ValueError("asset_id must be a SHA-256 id")
return value