51 lines
1.2 KiB
Python
51 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
|
||
|
|
|