-- Привязка ЖК к району Екатеринбурга через PostGIS spatial-join.
-- Источник полигонов: ekb_districts_geom (см. 56_*).
-- Idempotent.

ALTER TABLE domrf_kn_objects
    ADD COLUMN IF NOT EXISTS district_name TEXT;

CREATE INDEX IF NOT EXISTS idx_kn_objects_district
    ON domrf_kn_objects (district_name)
    WHERE district_name IS NOT NULL;

-- Backfill: для всех ЖК Свердл (region_cd=66) с координатами — найти район.
-- ST_Contains даёт точное «точка внутри полигона». ЖК вне всех 8 районов
-- (Первоуральск, Н.Тагил и т.п.) останутся с district_name=NULL.
UPDATE domrf_kn_objects o
   SET district_name = d.district_name
  FROM ekb_districts_geom d
 WHERE o.latitude IS NOT NULL AND o.longitude IS NOT NULL
   AND o.region_cd = 66
   AND ST_Contains(d.geom,
                   ST_SetSRID(ST_MakePoint(o.longitude, o.latitude), 4326));
