-- 002: 항공기 위치 이력 테이블 (PostGIS)
-- 리플레이 기능을 위한 시계열 위치 데이터 저장

SET search_path TO kcg, public;

-- PostGIS 확장 활성화
CREATE EXTENSION IF NOT EXISTS postgis;

-- 항공기 위치 이력 테이블
CREATE TABLE IF NOT EXISTS aircraft_positions (
    id              BIGSERIAL PRIMARY KEY,
    icao24          VARCHAR(6) NOT NULL,
    callsign        VARCHAR(16),
    position        geometry(Point, 4326) NOT NULL,
    altitude        DOUBLE PRECISION,
    velocity        DOUBLE PRECISION,
    heading         DOUBLE PRECISION,
    vertical_rate   DOUBLE PRECISION,
    on_ground       BOOLEAN DEFAULT FALSE,
    category        VARCHAR(16),
    typecode        VARCHAR(16),
    type_desc       VARCHAR(128),
    registration    VARCHAR(16),
    operator        VARCHAR(128),
    squawk          VARCHAR(4),
    source          VARCHAR(16) NOT NULL,
    region          VARCHAR(16) NOT NULL,
    collected_at    TIMESTAMP NOT NULL DEFAULT NOW(),
    last_seen       TIMESTAMP
);

-- GiST 공간 인덱스
CREATE INDEX IF NOT EXISTS idx_aircraft_pos_geom ON aircraft_positions USING GIST (position);

-- 시간 기반 인덱스 (리플레이 쿼리 최적화)
CREATE INDEX IF NOT EXISTS idx_aircraft_pos_collected ON aircraft_positions (collected_at);
CREATE INDEX IF NOT EXISTS idx_aircraft_pos_region_time ON aircraft_positions (region, collected_at);

-- 개별 항공기 추적
CREATE INDEX IF NOT EXISTS idx_aircraft_pos_icao24 ON aircraft_positions (icao24, collected_at);
