
    mj'                        S r SSKJr  SSKrSSKJr  \" \5      R                  5       R                  r	\	S-  r
\
S-  rSrS
SS jjrS
SS	 jjrg)u9   SQLite schéma pro hotely, termíny letů a historii cen.    )annotationsN)Pathdatazvacation.dba
  
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = WAL;

CREATE TABLE IF NOT EXISTS scrapes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    started_at TEXT NOT NULL,
    finished_at TEXT,
    hotels_ok INTEGER DEFAULT 0,
    flights_ok INTEGER DEFAULT 0,
    notes TEXT
);

CREATE TABLE IF NOT EXISTS hotels (
    id INTEGER PRIMARY KEY,
    slug TEXT NOT NULL,
    name TEXT NOT NULL,
    url TEXT NOT NULL,
    official_stars REAL,
    destination TEXT,
    destination_id INTEGER,
    area TEXT,
    country TEXT,
    lat REAL,
    lng REAL,
    airport_name TEXT,
    airport_iata TEXT,
    airport_distance TEXT,
    airport_distance_km REAL,
    beach_distance TEXT,
    center_distance TEXT,
    distances_json TEXT,
    benefits_json TEXT,
    summary TEXT,
    meals TEXT,
    meals_type TEXT,
    conditions TEXT,
    image_url TEXT,
    images_json TEXT,
    website TEXT,
    giata INTEGER,
    data_source INTEGER,
    provider_id TEXT,
    extra_json TEXT,
    updated_at TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS flights (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    destination_id INTEGER,
    destination TEXT,
    country TEXT,
    departure_airport TEXT,
    departure_airport_id INTEGER,
    departure_date TEXT,
    return_date TEXT,
    nights INTEGER,
    price_from REAL,
    currency TEXT DEFAULT 'CZK',
    search_filter TEXT,
    source_url TEXT,
    scrape_id INTEGER,
    scraped_at TEXT NOT NULL,
    UNIQUE (destination_id, departure_airport_id, departure_date, return_date, nights)
);

CREATE TABLE IF NOT EXISTS offers (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    hotel_id INTEGER NOT NULL,
    offer_key TEXT NOT NULL,
    departure_date TEXT,
    return_date TEXT,
    nights INTEGER,
    days INTEGER,
    departure_airport TEXT,
    arrival_airport TEXT,
    meal TEXT,
    room TEXT,
    price_total REAL,
    price_per_person REAL,
    currency TEXT DEFAULT 'CZK',
    scope TEXT DEFAULT 'hotel',
    booking_url TEXT,
    raw_json TEXT,
    scrape_id INTEGER,
    scraped_at TEXT NOT NULL,
    UNIQUE (hotel_id, offer_key)
);

CREATE TABLE IF NOT EXISTS price_history (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    hotel_id INTEGER,
    offer_key TEXT NOT NULL,
    departure_date TEXT,
    return_date TEXT,
    nights INTEGER,
    departure_airport TEXT,
    meal TEXT,
    room TEXT,
    price REAL NOT NULL,
    currency TEXT DEFAULT 'CZK',
    scope TEXT,
    scrape_id INTEGER,
    scraped_at TEXT NOT NULL
);

CREATE INDEX IF NOT EXISTS idx_history_key ON price_history(offer_key, scraped_at);
CREATE INDEX IF NOT EXISTS idx_history_hotel ON price_history(hotel_id, scraped_at);
CREATE INDEX IF NOT EXISTS idx_flights_dest ON flights(destination_id, departure_date);
c                    [         R                  SSS9  [        R                  " U =(       d    [        5      n[        R
                  Ul        UR                  S5        U$ )NT)parentsexist_okzPRAGMA foreign_keys = ON)DATA_DIRmkdirsqlite3connectDB_PATHRowrow_factoryexecute)pathconns     /var/www/vacation/db.pyr   r   |   sB    NN4$N/??4?7+D{{DLL+,K    c                   U S L nU =(       d
    [        5       n U R                  [        5        U R                  S5       Vs1 s H  o"S   iM	     nnSU;  a  U R                  S5        U R	                  5         U(       a  U $ U $ s  snf )NzPRAGMA table_info(offers)   daysz*ALTER TABLE offers ADD COLUMN days INTEGER)r   executescriptSCHEMAr   commit)r   ownrowcolss       r   init_dbr      sx    
$,C79Dv"ll+FGHGsFGDHTABKKM
K Is    B)N)r   zPath | Nonereturnsqlite3.Connection)r   zsqlite3.Connection | Noner   r    )__doc__
__future__r   r   pathlibr   __file__resolveparentROOTr	   r   r   r   r    r   r   <module>r)      sO    ? "  H~&&&=
]
"m
`
r   