-- Trade-In MVP — отслеживание попыток геокодинга.
--
-- Проблема: geocode-missing раньше выбирал ВСЕ строки с lat IS NULL. Адреса,
-- которые Nominatim не может распознать (~12%), выбирались на каждом прогоне
-- → бесконечный ретрай + cron-таймаут.
--
-- Решение: колонка geocode_tried_at. После КАЖДОЙ попытки (успех или провал)
-- ставим NOW(). geocode-missing выбирает только не-пробованные ИЛИ
-- пробованные >7 дней назад. Failed-адреса ретраятся раз в неделю, не каждый cron.
--
-- Идемпотентно (ADD COLUMN IF NOT EXISTS) — безопасно при каждом деплое.

ALTER TABLE listings ADD COLUMN IF NOT EXISTS geocode_tried_at timestamptz;
ALTER TABLE deals    ADD COLUMN IF NOT EXISTS geocode_tried_at timestamptz;

-- Частичные индексы: ускоряют выборку «что ещё геокодить».
CREATE INDEX IF NOT EXISTS listings_geocode_pending_idx
    ON listings (geocode_tried_at NULLS FIRST)
    WHERE lat IS NULL;
CREATE INDEX IF NOT EXISTS deals_geocode_pending_idx
    ON deals (geocode_tried_at NULLS FIRST)
    WHERE lat IS NULL;
