31 lines
1.2 KiB
Python
31 lines
1.2 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 ArrivalStatus(str, Enum):
|
|
BOOKED_IN = "BOOKED_IN"
|
|
LANDED = "LANDED"
|
|
CANCELLED = "CANCELLED"
|
|
|
|
|
|
class Arrival(Base):
|
|
__tablename__ = "arrivals"
|
|
|
|
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)
|
|
in_from = Column(String(4), nullable=False, index=True)
|
|
status = Column(SQLEnum(ArrivalStatus), default=ArrivalStatus.BOOKED_IN, nullable=False, index=True)
|
|
notes = Column(Text, nullable=True)
|
|
created_dt = Column(DateTime, server_default=func.now(), nullable=False, index=True)
|
|
eta = Column(DateTime, nullable=True, index=True)
|
|
landed_dt = Column(DateTime, nullable=True)
|
|
created_by = Column(String(16), nullable=True, index=True)
|
|
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), nullable=False)
|