feat: lock concurrent moderation decisions
This commit is contained in:
@@ -199,11 +199,13 @@ class AdminCatchReportOut(BaseModel):
|
||||
moderation_status: str
|
||||
comment: str | None
|
||||
screenshot_url: str | None
|
||||
moderation_version: int
|
||||
|
||||
|
||||
class ModerationUpdate(BaseModel):
|
||||
status: str
|
||||
reason: str | None = Field(default=None, max_length=1000)
|
||||
expected_version: int = Field(ge=0)
|
||||
|
||||
@field_validator("status")
|
||||
@classmethod
|
||||
@@ -236,12 +238,14 @@ class ExternalObservationOut(BaseModel):
|
||||
review_note: str | None
|
||||
missing_fields: list[str]
|
||||
source_payload: dict[str, str | int | float | bool | None]
|
||||
moderation_version: int
|
||||
|
||||
|
||||
class ExternalObservationMapping(BaseModel):
|
||||
fish_slug: str
|
||||
waterbody_slug: str
|
||||
note: str | None = Field(default=None, max_length=1000)
|
||||
expected_version: int = Field(ge=0)
|
||||
|
||||
|
||||
class ExternalAliasSuggestionOut(BaseModel):
|
||||
@@ -261,6 +265,11 @@ class AdminModerationHistoryOut(BaseModel):
|
||||
|
||||
class ExternalObservationDecision(BaseModel):
|
||||
reason: str = Field(min_length=1, max_length=1000)
|
||||
expected_version: int = Field(ge=0)
|
||||
|
||||
|
||||
class ExternalObservationAction(BaseModel):
|
||||
expected_version: int = Field(ge=0)
|
||||
|
||||
|
||||
class ExternalObservationPublished(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user