66 lines
1.2 KiB
Python
66 lines
1.2 KiB
Python
from datetime import datetime
|
|
from typing import List, Optional
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class SleepSessionCreate(BaseModel):
|
|
start_time: datetime
|
|
|
|
|
|
class SleepSessionUpdate(BaseModel):
|
|
start_time: Optional[datetime] = None
|
|
end_time: Optional[datetime] = None
|
|
notes: Optional[str] = None
|
|
|
|
|
|
class SleepSessionRead(BaseModel):
|
|
id: int
|
|
start_time: datetime
|
|
end_time: Optional[datetime]
|
|
notes: Optional[str]
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class SessionListResponse(BaseModel):
|
|
sessions: List[SleepSessionRead]
|
|
total: int
|
|
|
|
|
|
class DailySummaryDay(BaseModel):
|
|
date: str
|
|
total_minutes: int
|
|
day_minutes: int
|
|
night_minutes: int
|
|
|
|
|
|
class DailySummaryResponse(BaseModel):
|
|
days: List[DailySummaryDay]
|
|
|
|
|
|
class TimetableSlot(BaseModel):
|
|
date: str
|
|
slot_start: str
|
|
slot_end: str
|
|
sleeping: bool
|
|
|
|
|
|
class TimetableResponse(BaseModel):
|
|
slots: List[TimetableSlot]
|
|
|
|
|
|
class WakeupBedtimeDay(BaseModel):
|
|
date: str
|
|
wakeup_minutes: Optional[int]
|
|
bedtime_minutes: Optional[int]
|
|
|
|
|
|
class WakeupBedtimeResponse(BaseModel):
|
|
days: List[WakeupBedtimeDay]
|
|
|
|
|
|
class SummaryResponse(BaseModel):
|
|
total_sleeps: int
|
|
avg_sleeps_per_day: float
|
|
|