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 total_sleeps_all_time: int avg_sleeps_per_day_all_time: float