"""Shared Pydantic models for Schedule API payloads.""" from __future__ import annotations from typing import Literal, Optional from pydantic import BaseModel, Field, model_validator class SchedulePayload(BaseModel): schedule_kind: Literal["interval", "weekdays"] = "interval" interval_days: int = Field(default=1, gt=0) weekday_mask: int = Field(default=0, ge=0, le=127) pause_until: Optional[str] = Field(default=None, description="ISO date YYYY-MM-DD") @model_validator(mode="after") def validate_kind(self) -> "SchedulePayload": if self.schedule_kind == "weekdays" and self.weekday_mask <= 0: raise ValueError("Mindestens ein Wochentag auswählen") return self def pause_until_date(self): from services.schedule import _parse_pause_until return _parse_pause_until(self.pause_until)