-- Auctions
CREATE TABLE auctions (
    auction_id TEXT PRIMARY KEY,
    url TEXT UNIQUE,
    title TEXT,
    location TEXT,
    lots_count INTEGER,
    first_lot_closing_time TEXT,
    scraped_at TEXT,
    city TEXT,
    country TEXT,
    type TEXT,
    lot_count INTEGER DEFAULT 0,
    closing_time TEXT,
    discovered_at BIGINT
);

CREATE INDEX idx_auctions_country ON auctions(country);

-- Cache
CREATE TABLE cache (
    url TEXT PRIMARY KEY,
    content BYTEA,
    timestamp DOUBLE PRECISION,
    status_code INTEGER
);

CREATE INDEX idx_timestamp ON cache(timestamp);

-- Lots
CREATE TABLE lots (
    lot_id TEXT PRIMARY KEY,
    auction_id TEXT REFERENCES auctions(auction_id),
    url TEXT UNIQUE,
    title TEXT,
    current_bid TEXT,
    bid_count INTEGER,
    closing_time TEXT,
    viewing_time TEXT,
    pickup_date TEXT,
    location TEXT,
    description TEXT,
    category TEXT,
    scraped_at TEXT,
    sale_id INTEGER,
    manufacturer TEXT,
    type TEXT,
    year INTEGER,
    currency TEXT DEFAULT 'EUR',
    closing_notified INTEGER DEFAULT 0,
    starting_bid TEXT,
    minimum_bid TEXT,
    status TEXT,
    brand TEXT,
    model TEXT,
    attributes_json TEXT,
    first_bid_time TEXT,
    last_bid_time TEXT,
    bid_velocity DOUBLE PRECISION,
    bid_increment DOUBLE PRECISION,
    year_manufactured INTEGER,
    condition_score DOUBLE PRECISION,
    condition_description TEXT,
    serial_number TEXT,
    damage_description TEXT,
    followers_count INTEGER DEFAULT 0,
    estimated_min_price DOUBLE PRECISION,
    estimated_max_price DOUBLE PRECISION,
    lot_condition TEXT,
    appearance TEXT,
    estimated_min DOUBLE PRECISION,
    estimated_max DOUBLE PRECISION,
    next_bid_step_cents INTEGER,
    condition TEXT,
    category_path TEXT,
    city_location TEXT,
    country_code TEXT,
    bidding_status TEXT,
    packaging TEXT,
    quantity INTEGER,
    vat DOUBLE PRECISION,
    buyer_premium_percentage DOUBLE PRECISION,
    remarks TEXT,
    reserve_price DOUBLE PRECISION,
    reserve_met INTEGER,
    view_count INTEGER,
    api_data_json TEXT,
    next_scrape_at BIGINT,
    scrape_priority INTEGER DEFAULT 0
);

CREATE INDEX idx_lots_closing_time ON lots(closing_time);
CREATE INDEX idx_lots_next_scrape ON lots(next_scrape_at);
CREATE INDEX idx_lots_priority ON lots(scrape_priority DESC);
CREATE INDEX idx_lots_sale_id ON lots(sale_id);

-- Bid history
CREATE TABLE bid_history (
    id SERIAL PRIMARY KEY,
    lot_id TEXT REFERENCES lots(lot_id),
    bid_amount DOUBLE PRECISION NOT NULL,
    bid_time TEXT NOT NULL,
    is_autobid INTEGER DEFAULT 0,
    bidder_id TEXT,
    bidder_number INTEGER,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX idx_bid_history_bidder ON bid_history(bidder_id);
CREATE INDEX idx_bid_history_lot_time ON bid_history(lot_id, bid_time);

-- Images
CREATE TABLE images (
    id SERIAL PRIMARY KEY,
    lot_id TEXT REFERENCES lots(lot_id),
    url TEXT,
    local_path TEXT,
    downloaded INTEGER DEFAULT 0,
    labels TEXT,
    processed_at BIGINT
);

CREATE INDEX idx_images_lot_id ON images(lot_id);
CREATE UNIQUE INDEX idx_unique_lot_url ON images(lot_id, url);

-- Resource cache
CREATE TABLE resource_cache (
    url TEXT PRIMARY KEY,
    content BYTEA,
    content_type TEXT,
    status_code INTEGER,
    headers TEXT,
    timestamp DOUBLE PRECISION,
    size_bytes INTEGER,
    local_path TEXT
);

CREATE INDEX idx_resource_timestamp ON resource_cache(timestamp);
CREATE INDEX idx_resource_content_type ON resource_cache(content_type);
