Initial commit: SIBU 2.0 MISSION
This commit is contained in:
31
backend/app/models/bus_schedule.py
Normal file
31
backend/app/models/bus_schedule.py
Normal file
@ -0,0 +1,31 @@
|
||||
"""Bus schedule model."""
|
||||
from sqlmodel import SQLModel, Field, Column
|
||||
from datetime import datetime, time
|
||||
from typing import Optional
|
||||
from enum import Enum
|
||||
from uuid import UUID, uuid4
|
||||
from sqlalchemy import DateTime, func
|
||||
|
||||
|
||||
class BusScheduleType(str, Enum):
|
||||
"""Schedule type enumeration."""
|
||||
WEEKDAY = "weekday"
|
||||
WEEKEND = "weekend"
|
||||
HOLIDAY = "holiday"
|
||||
|
||||
|
||||
class BusSchedule(SQLModel, table=True):
|
||||
"""Bus schedule model."""
|
||||
|
||||
__tablename__ = "bus_schedules"
|
||||
|
||||
id: Optional[UUID] = Field(default_factory=uuid4, primary_key=True)
|
||||
route_id: UUID = Field(foreign_key="routes.id")
|
||||
departure_time: time
|
||||
frequency_minutes: Optional[int] = 30
|
||||
schedule_type: BusScheduleType = BusScheduleType.WEEKDAY
|
||||
is_active: bool = Field(default=True)
|
||||
is_published: bool = Field(default=False)
|
||||
notes: Optional[str] = None
|
||||
created_at: Optional[datetime] = Field(sa_column=Column(DateTime, server_default=func.now()))
|
||||
|
||||
Reference in New Issue
Block a user