from datetime import datetime

from pydantic import BaseModel, Field


class AlertConfigCreate(BaseModel):
    company_id: str | None = None  # null = global
    type: str = Field(pattern="^(email|webhook)$")
    target: str = Field(min_length=1)
    enabled: bool = True
    # 'process' = processo judicial novo; 'insolvency' = prazo de reclamação de
    # créditos. Separados para se poder avisar pessoas diferentes de cada coisa.
    kind: str = Field(default="process", pattern="^(process|insolvency|digest)$")


class AlertConfigUpdate(BaseModel):
    enabled: bool | None = None
    target: str | None = None


class AlertConfigOut(BaseModel):
    id: str
    company_id: str | None
    type: str
    target: str
    enabled: bool
    kind: str = "process"
    created_at: datetime


class AlertLogOut(BaseModel):
    id: str
    process_id: str | None
    alert_config_id: str
    status: str
    response: str | None
    created_at: datetime


class AlertPayload(BaseModel):
    company: str
    nif: str | None
    process_number: str
    court: str
    date: str
    type: str | None
    source: str
    created_at: str
