-- 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;
