Compare commits

..

No commits in common. "6d4dbd3e9d4e0b01aebb699fb76dda85622115cd" and "9b06377df8b0b0865cdceb9167315cac6315b608" have entirely different histories.

View file

@ -1,39 +0,0 @@
-- 102_grant_listings_gendesign_reader.sql
-- Доступ gendesign_reader к market-слою tradein: unit-level квартиры-объявления (#1191).
--
-- Контекст: Site Finder читает вторичный рынок через ETL-роль gendesign_reader.
-- Потребитель сам фильтрует канон-предикатом:
-- WHERE listing_segment IS NULL OR listing_segment = 'vtorichka'
-- Этот файл НЕ навязывает фильтр — ответственность на стороне consumer'а (#1191 контракт).
--
-- Гранты:
-- listings — основная таблица объявлений (цена, площадь, адрес, геометрия).
-- offer_price_history — история изменений цен на квартиру (#023); нужна SF для анализа
-- динамики цены в разрезе участка (trend up/down, volatility).
--
-- НЕ грантится:
-- listing_sources, listing_source_snapshots, listing_source_events — внутренний ETL tradein,
-- не несут дополнительной ценности для SF read-запросов поверх того, что уже есть в listings
-- + offer_price_history.
--
-- Идемпотентно: GRANT SELECT идемпотентен; роль проверяется fail-fast DO-блоком ниже.
-- AUTO-APPLIED на прод при деплое через deploy-tradein.yml/_schema_migrations.
-- Применяется после 101_gendesign_reader_role.sql (NN гарантирует порядок).
BEGIN;
-- Fail-fast: роль должна существовать (м.101 идёт раньше по NN — заведомо ok).
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'gendesign_reader') THEN
RAISE EXCEPTION 'роль gendesign_reader отсутствует — сначала примените 101_gendesign_reader_role.sql';
END IF;
END$$;
-- unit-level объявления вторичного рынка
GRANT SELECT ON listings TO gendesign_reader;
-- история цен на объявление (#023) — динамика цен квартир нужна SF (trend/volatility)
GRANT SELECT ON offer_price_history TO gendesign_reader;
COMMIT;