Files
wiki/tasks/flightradar24/db/migrations/007_flight_actual.sql
2026-04-21 18:50:01 +03:00

46 lines
2.1 KiB
SQL

-- Migration 007: flight_actual table + schedule enrichment columns
-- ── New table: actual flight data from FR24 flight-summary/full ────────────
CREATE TABLE IF NOT EXISTS fr24_ext.flight_actual (
id BIGSERIAL PRIMARY KEY,
fr24_id VARCHAR(30) NOT NULL UNIQUE,
flight VARCHAR(20),
callsign VARCHAR(20),
operated_as VARCHAR(5), -- ICAO airline code
origin_icao VARCHAR(5),
dest_icao VARCHAR(5),
datetime_takeoff TIMESTAMPTZ,
datetime_landed TIMESTAMPTZ,
flight_time INTEGER, -- seconds
runway_takeoff VARCHAR(10),
runway_landed VARCHAR(10),
actual_distance FLOAT, -- km
category VARCHAR(20), -- Passenger/Cargo/Military
flight_ended BOOLEAN DEFAULT false,
first_seen TIMESTAMPTZ,
last_seen TIMESTAMPTZ,
flight_date DATE NOT NULL,
fetched_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_flight_actual_date ON fr24_ext.flight_actual (flight_date);
CREATE INDEX IF NOT EXISTS idx_flight_actual_flight ON fr24_ext.flight_actual (flight, flight_date);
CREATE INDEX IF NOT EXISTS idx_flight_actual_orig ON fr24_ext.flight_actual (origin_icao, flight_date);
CREATE INDEX IF NOT EXISTS idx_flight_actual_dest ON fr24_ext.flight_actual (dest_icao, flight_date);
CREATE INDEX IF NOT EXISTS idx_flight_actual_category ON fr24_ext.flight_actual (category);
-- ── Enrich schedule table with actual times + delays ────────────────────────
ALTER TABLE fr24_ext.schedule
ADD COLUMN IF NOT EXISTS actual_takeoff TIMESTAMPTZ,
ADD COLUMN IF NOT EXISTS actual_landed TIMESTAMPTZ,
ADD COLUMN IF NOT EXISTS delay_takeoff_min INTEGER,
ADD COLUMN IF NOT EXISTS delay_landed_min INTEGER,
ADD COLUMN IF NOT EXISTS fr24_id VARCHAR(30),
ADD COLUMN IF NOT EXISTS flight_category VARCHAR(20);
CREATE INDEX IF NOT EXISTS idx_schedule_fr24_id ON fr24_ext.schedule (fr24_id);
COMMENT ON TABLE fr24_ext.flight_actual IS 'Actual flight data from FR24 flight-summary/full endpoint';