CREATE TABLE IF NOT EXISTS station (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL UNIQUE,
    notes TEXT,
    amount_people INTEGER,
    last_login DATETIME,
    pw TEXT NOT NULL DEFAULT (upper(hex(randomblob(4)))),
    lat REAL,
    lng REAL
);

CREATE TABLE IF NOT EXISTS route (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL UNIQUE -- e.g. 'wiwö'
);

CREATE TABLE IF NOT EXISTS route_station (
    route_id INTEGER NOT NULL,
    station_id INTEGER NOT NULL,
    pos INTEGER NOT NULL,
    PRIMARY KEY (route_id, station_id),
    FOREIGN KEY (route_id) REFERENCES route(id),
    FOREIGN KEY (station_id) REFERENCES station(id)
);

CREATE TABLE IF NOT EXISTS team (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL UNIQUE,
    notes TEXT,
    amount_people INTEGER,
    first_station_id INTEGER NOT NULL,
    route_id INTEGER NOT NULL,
    FOREIGN KEY (first_station_id) REFERENCES station(id),
    FOREIGN KEY (route_id) REFERENCES route(id)
);

CREATE TABLE IF NOT EXISTS rating (
    team_id INTEGER NOT NULL,
    station_id INTEGER NOT NULL,
    points INTEGER,
    notes TEXT,
    arrived_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    started_at DATETIME,
    left_at DATETIME,
    PRIMARY KEY (team_id, station_id),
    FOREIGN KEY (team_id) REFERENCES team(id),
    FOREIGN KEY (station_id) REFERENCES station(id)
);


