from datetime import datetime, date, time from decimal import Decimal from pydantic import BaseModel, Field class CalendarEventCreate(BaseModel): title: str = Field(..., max_length=200) description: str | None = None event_date: date event_time: time | None = None is_recurring: bool = False recurrence_pattern: str | None = Field(None, pattern="^(daily|weekly|monthly|yearly)$") recurrence_end_date: date | None = None related_operation_id: int | None = None category_id: int | None = None amount: Decimal | None = None currency_id: int | None = None reminder_days: int | None = Field(None, ge=0) is_completed: bool = False class CalendarEventUpdate(BaseModel): title: str | None = Field(None, max_length=200) description: str | None = None event_date: date | None = None event_time: time | None = None is_recurring: bool | None = None recurrence_pattern: str | None = None recurrence_end_date: date | None = None related_operation_id: int | None = None category_id: int | None = None amount: Decimal | None = None reminder_days: int | None = None is_completed: bool | None = None class CalendarEventOut(BaseModel): id: int user_id: int title: str description: str | None = None event_date: date event_time: time | None = None is_recurring: bool recurrence_pattern: str | None = None recurrence_end_date: date | None = None related_operation_id: int | None = None category_id: int | None = None amount: Decimal | None = None currency_id: int | None = None reminder_days: int | None = None is_completed: bool created_at: datetime model_config = {"from_attributes": True}