-- 053_scraper_settings.sql
-- Purpose: Per-source live-config for scraper request delays (anti-ban knob).
--          Loaded by app at runtime; UI can update without restart.
-- Dependencies: none (standalone settings table)
-- Sources: User request 2026-05-23 -- Yandex admin page + global delay knob.

BEGIN;

CREATE TABLE IF NOT EXISTS scraper_settings (
    source          text PRIMARY KEY,         -- 'yandex' / 'avito' / 'cian' / 'n1' / 'yandex_detail' / ...
    request_delay_sec numeric(5,2) NOT NULL,  -- seconds between requests (anti-ban). Range 1-60.
    updated_at      timestamptz NOT NULL DEFAULT NOW(),
    -- Hint about who owns this knob (UI displays, no behavior)
    description     text
);

COMMENT ON TABLE scraper_settings IS
  'Per-source runtime config for scrapers. Currently exposes request_delay_sec '
  '(anti-ban delay between HTTP requests). Editable via admin UI; backend reads '
  'with 60s in-process cache. Source key matches BaseScraper.name in code.';

-- Seed: Yandex umbrella key applies to all 4 Yandex scrapers
-- (yandex / yandex_detail / yandex_newbuilding / yandex_valuation read this key).
INSERT INTO scraper_settings (source, request_delay_sec, description)
VALUES ('yandex', 5.0, 'Global delay applied to all Yandex Realty scrapers (SERP, detail, newbuilding, valuation)')
ON CONFLICT (source) DO NOTHING;

COMMIT;
