31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
from sqlalchemy import Column, BigInteger, String, Integer, Text, DateTime, Enum as SQLEnum, func
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from enum import Enum
|
|
from datetime import datetime
|
|
|
|
Base = declarative_base()
|
|
|
|
|
|
class DepartureStatus(str, Enum):
|
|
BOOKED_OUT = "BOOKED_OUT"
|
|
DEPARTED = "DEPARTED"
|
|
CANCELLED = "CANCELLED"
|
|
|
|
|
|
class Departure(Base):
|
|
__tablename__ = "departures"
|
|
|
|
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
|
registration = Column(String(16), nullable=False, index=True)
|
|
type = Column(String(32), nullable=True)
|
|
callsign = Column(String(16), nullable=True)
|
|
pob = Column(Integer, nullable=False)
|
|
out_to = Column(String(64), nullable=False, index=True)
|
|
status = Column(SQLEnum(DepartureStatus), default=DepartureStatus.BOOKED_OUT, nullable=False, index=True)
|
|
notes = Column(Text, nullable=True)
|
|
created_dt = Column(DateTime, server_default=func.now(), nullable=False, index=True)
|
|
etd = Column(DateTime, nullable=True, index=True) # Estimated Time of Departure
|
|
departed_dt = Column(DateTime, nullable=True) # Actual departure time
|
|
created_by = Column(String(16), nullable=True, index=True)
|
|
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), nullable=False)
|