-- postgres_fdw extension for tradein → gendesign live reads. -- Idempotent. Server config only (no USER MAPPING — that's set by backend startup with env password). BEGIN; CREATE EXTENSION IF NOT EXISTS postgres_fdw; DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_foreign_server WHERE srvname = 'gendesign_remote') THEN CREATE SERVER gendesign_remote FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'gendesign-postgres', dbname 'gendesign', port '5432', extensions 'postgis', connect_timeout '3'); ELSE -- Update existing server: add connect_timeout if missing, or set if already present. BEGIN ALTER SERVER gendesign_remote OPTIONS (ADD connect_timeout '3'); EXCEPTION WHEN OTHERS THEN ALTER SERVER gendesign_remote OPTIONS (SET connect_timeout '3'); END; END IF; END$$; -- Drop existing foreign table if mistakenly created with wrong schema (idempotent re-create below) DROP FOREIGN TABLE IF EXISTS gendesign_cad_buildings; CREATE FOREIGN TABLE gendesign_cad_buildings ( cad_num text, readable_address text, year_built integer, floors integer, area_m2 numeric, purpose text, lat double precision, lon double precision ) SERVER gendesign_remote OPTIONS (schema_name 'public', table_name 'v_tradein_cad_buildings'); COMMENT ON FOREIGN TABLE gendesign_cad_buildings IS 'Live view of gendesign.cad_buildings (EKB only). USER MAPPING managed by backend startup.'; COMMIT;