Book in functions
This commit is contained in:
@@ -91,7 +91,8 @@ def upgrade() -> None:
|
||||
sa.Column('in_from', sa.String(length=64), nullable=False),
|
||||
sa.Column('status', sa.Enum('BOOKED_IN', 'LANDED', 'CANCELLED', name='arrivalsstatus'), nullable=False, server_default='BOOKED_IN'),
|
||||
sa.Column('notes', sa.Text(), nullable=True),
|
||||
sa.Column('booked_in_dt', sa.DateTime(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False),
|
||||
sa.Column('created_dt', sa.DateTime(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False),
|
||||
sa.Column('eta', sa.DateTime(), nullable=True),
|
||||
sa.Column('landed_dt', sa.DateTime(), nullable=True),
|
||||
sa.Column('created_by', sa.String(length=16), nullable=True),
|
||||
sa.Column('updated_at', sa.DateTime(), server_default=sa.text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), nullable=False),
|
||||
@@ -104,7 +105,8 @@ def upgrade() -> None:
|
||||
op.create_index('idx_arr_registration', 'arrivals', ['registration'])
|
||||
op.create_index('idx_arr_in_from', 'arrivals', ['in_from'])
|
||||
op.create_index('idx_arr_status', 'arrivals', ['status'])
|
||||
op.create_index('idx_arr_booked_in_dt', 'arrivals', ['booked_in_dt'])
|
||||
op.create_index('idx_arr_created_dt', 'arrivals', ['created_dt'])
|
||||
op.create_index('idx_arr_eta', 'arrivals', ['eta'])
|
||||
op.create_index('idx_arr_created_by', 'arrivals', ['created_by'])
|
||||
|
||||
|
||||
|
||||
@@ -63,6 +63,28 @@ async def get_public_arrivals(db: Session = Depends(get_db)):
|
||||
'flight_type': flight.flight_type.value
|
||||
})
|
||||
|
||||
# Add booked-in arrivals
|
||||
booked_in_arrivals = crud_arrival.get_multi(db, limit=1000)
|
||||
for arrival in booked_in_arrivals:
|
||||
# Only include BOOKED_IN and LANDED arrivals
|
||||
if arrival.status not in (ArrivalStatus.BOOKED_IN, ArrivalStatus.LANDED):
|
||||
continue
|
||||
# For BOOKED_IN, only include those from today; for LANDED, include all
|
||||
if arrival.status == ArrivalStatus.BOOKED_IN:
|
||||
if not (today_start <= arrival.created_dt < today_end):
|
||||
continue
|
||||
|
||||
arrivals_list.append({
|
||||
'registration': arrival.registration,
|
||||
'callsign': arrival.callsign,
|
||||
'type': arrival.type,
|
||||
'in_from': arrival.in_from,
|
||||
'eta': arrival.eta,
|
||||
'landed_dt': arrival.landed_dt,
|
||||
'status': arrival.status.value,
|
||||
'isBookedIn': True
|
||||
})
|
||||
|
||||
return arrivals_list
|
||||
|
||||
|
||||
|
||||
@@ -25,25 +25,25 @@ class CRUDArrival:
|
||||
query = query.filter(Arrival.status == status)
|
||||
|
||||
if date_from:
|
||||
query = query.filter(func.date(Arrival.booked_in_dt) >= date_from)
|
||||
query = query.filter(func.date(Arrival.created_dt) >= date_from)
|
||||
|
||||
if date_to:
|
||||
query = query.filter(func.date(Arrival.booked_in_dt) <= date_to)
|
||||
query = query.filter(func.date(Arrival.created_dt) <= date_to)
|
||||
|
||||
return query.order_by(desc(Arrival.booked_in_dt)).offset(skip).limit(limit).all()
|
||||
return query.order_by(desc(Arrival.created_dt)).offset(skip).limit(limit).all()
|
||||
|
||||
def get_arrivals_today(self, db: Session) -> List[Arrival]:
|
||||
"""Get today's arrivals (booked in or landed)"""
|
||||
today = date.today()
|
||||
return db.query(Arrival).filter(
|
||||
and_(
|
||||
func.date(Arrival.booked_in_dt) == today,
|
||||
func.date(Arrival.created_dt) == today,
|
||||
or_(
|
||||
Arrival.status == ArrivalStatus.BOOKED_IN,
|
||||
Arrival.status == ArrivalStatus.LANDED
|
||||
)
|
||||
)
|
||||
).order_by(Arrival.booked_in_dt).all()
|
||||
).order_by(Arrival.created_dt).all()
|
||||
|
||||
def create(self, db: Session, obj_in: ArrivalCreate, created_by: str) -> Arrival:
|
||||
db_obj = Arrival(
|
||||
|
||||
@@ -23,7 +23,8 @@ class Arrival(Base):
|
||||
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)
|
||||
booked_in_dt = Column(DateTime, server_default=func.now(), nullable=False, index=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)
|
||||
|
||||
@@ -38,7 +38,7 @@ class ArrivalBase(BaseModel):
|
||||
|
||||
|
||||
class ArrivalCreate(ArrivalBase):
|
||||
pass
|
||||
eta: Optional[datetime] = None
|
||||
|
||||
|
||||
class ArrivalUpdate(BaseModel):
|
||||
@@ -57,7 +57,8 @@ class ArrivalStatusUpdate(BaseModel):
|
||||
class Arrival(ArrivalBase):
|
||||
id: int
|
||||
status: ArrivalStatus
|
||||
booked_in_dt: datetime
|
||||
created_dt: datetime
|
||||
eta: Optional[datetime] = None
|
||||
landed_dt: Optional[datetime] = None
|
||||
created_by: Optional[str] = None
|
||||
updated_at: datetime
|
||||
|
||||
Reference in New Issue
Block a user