geo/backend/app/schemas/detection_task.py

52 lines
1.4 KiB
Python

import uuid
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field
class DetectionTaskCreate(BaseModel):
brand_id: uuid.UUID
name: str = Field(..., min_length=1, max_length=200)
frequency: str = Field(..., pattern="^(hourly|daily|weekly)$")
engines: list[str] = Field(default=[], min_length=1)
queries: list[str] = Field(default=[], min_length=1)
competitor_names: Optional[list[str]] = None
class DetectionTaskUpdate(BaseModel):
name: Optional[str] = Field(None, min_length=1, max_length=200)
frequency: Optional[str] = Field(None, pattern="^(hourly|daily|weekly)$")
engines: Optional[list[str]] = None
queries: Optional[list[str]] = None
competitor_names: Optional[list[str]] = None
is_active: Optional[bool] = None
class DetectionTaskResponse(BaseModel):
id: uuid.UUID
brand_id: uuid.UUID
user_id: uuid.UUID
name: str
frequency: str
engines: list[str]
queries: list[str]
competitor_names: Optional[list[str]] = None
is_active: bool
last_run_at: Optional[datetime] = None
next_run_at: Optional[datetime] = None
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class DetectionTaskListResponse(BaseModel):
items: list[DetectionTaskResponse]
total: int
class DetectionTriggerResponse(BaseModel):
status: str
message: Optional[str] = None