select load_extension('mod_spatialite.so.8');
select InitSpatialMetadata(1);

begin transaction;

create table nexrad_radar (
    id             INTEGER PRIMARY KEY NOT NULL,
    wban           INTEGER,
    call           TEXT NOT NULL,
    name           TEXT NOT NULL,
    site_elevation FLOAT NOT NULL,
    tower_height   FLOAT NOT NULL
);

select
    AddGeometryColumn('nexrad_radar', 'coord', 4326, 'POINT', 'XY'),
    CreateSpatialIndex('nexrad_radar', 'coord');

create table nexrad_storm_event (
    id               INTEGER PRIMARY KEY NOT NULL,
    episode_id       INTEGER,
    timestamp_start  TIMESTAMP NOT NULL,
    timestamp_end    TIMESTAMP NOT NULL,
    state            TEXT NOT NULL,
    event_type       TEXT NOT NULL,
    wfo              TEXT NOT NULL,
    locale_start     TEXT NOT NULL,
    locale_end       TEXT NOT NULL,
    tornado_f_rating TEXT
);

create index nexrad_storm_event_episode_id_idx      on nexrad_storm_event (episode_id);
create index nexrad_storm_event_event_type_idx      on nexrad_storm_event (event_type);
create index nexrad_storm_event_wfo_idx             on nexrad_storm_event (wfo);
create index nexrad_storm_event_timestamp_start_idx on nexrad_storm_event (timestamp_start);
create index nexrad_storm_event_timestamp_end_idx   on nexrad_storm_event (timestamp_end);

select
    AddGeometryColumn('nexrad_storm_event', 'coord_start', 4326, 'POINT', 'XY', 0),
    CreateSpatialIndex('nexrad_storm_event', 'coord_start');

select
    AddGeometryColumn('nexrad_storm_event', 'coord_end', 4326, 'POINT', 'XY', 0),
    CreateSpatialIndex('nexrad_storm_event', 'coord_end');

create table nexrad_afos_message (
    id               INTEGER PRIMARY KEY NOT NULL,
    timestamp_issued TIMESTAMP NOT NULL,
    timestamp_start  TIMESTAMP NOT NULL,
    timestamp_end    TIMESTAMP NOT NULL,
    vtec_type        TEXT NOT NULL,
    actions          TEXT NOT NULL,
    wfo              TEXT NOT NULL,
    phenom           TEXT NOT NULL,
    sig              TEXT NOT NULL,
    etn              INTEGER NOT NULL,
    body             TEXT NOT NULL,
    azimuth          FLOAT NOT NULL,
    speed            FLOAT NOT NULL,
    forecaster       TEXT NOT NULL
);

select
    AddGeometryColumn('nexrad_afos_message', 'location', 4326, 'POINT'),
    CreateSpatialIndex('nexrad_afos_message', 'location');

select
    AddGeometryColumn('nexrad_afos_message', 'poly', 4326, 'POLYGON'),
    CreateSpatialIndex('nexrad_afos_message', 'poly');

commit;
