scheduleSon/backend/models.py
2025-12-30 12:23:42 +03:00

50 lines
1.2 KiB
Python

from pydantic import BaseModel
from typing import Optional, Literal
from datetime import date
class TaskCreate(BaseModel):
date: str # YYYY-MM-DD
title: str
repeat_weekly: bool = False
copy_to_weekdays: Optional[list[int]] = None # список дней недели для копирования
class EventCreate(BaseModel):
date: str # YYYY-MM-DD
start_time: str # HH:MM
duration_min: int
title: str
class TaskResponse(BaseModel):
id: int
date: str
title: str
kind: Literal["task"] = "task"
repeat_weekly: bool = False
class EventResponse(BaseModel):
id: int
date: str
start_time: str
duration_min: int
title: str
kind: Literal["event"] = "event"
class ScheduleItem(BaseModel):
kind: Literal["task", "event"]
id: int
date: str
title: str
start_time: Optional[str] = None
duration_min: Optional[int] = None
repeat_weekly: Optional[bool] = None
class ScheduleResponse(BaseModel):
items: list[ScheduleItem]
class UpdateRequest(BaseModel):
title: Optional[str] = None
date: Optional[str] = None
start_time: Optional[str] = None
duration_min: Optional[int] = None
scope: Optional[Literal["one_date", "series"]] = None # для weekly tasks