-- ============================================================
-- 027: 민감자원 테이블 생성
-- 모든 민감자원(양식장, 해수욕장, 무역항 등)을 단일 테이블로 관리
-- properties는 JSONB로 유연하게 저장
-- ============================================================

SET search_path TO wing, public;

CREATE EXTENSION IF NOT EXISTS postgis;

-- ============================================================
-- 민감자원 테이블
-- ============================================================
CREATE TABLE IF NOT EXISTS SENSITIVE_RESOURCE (
    SR_ID       BIGSERIAL       PRIMARY KEY,
    CATEGORY    VARCHAR(50)     NOT NULL,                       -- 민감자원 유형 (양식장, 해수욕장, 무역항 등)
    GEOM        public.geometry(Geometry, 4326) NOT NULL,         -- 공간 데이터 (Point, LineString, Polygon 모두 수용)
    PROPERTIES  JSONB           NOT NULL DEFAULT '{}',           -- 원본 GeoJSON properties
    REG_DT      TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP,
    MOD_DT      TIMESTAMP
);

-- 공간 인덱스
CREATE INDEX IF NOT EXISTS IDX_SR_GEOM ON SENSITIVE_RESOURCE USING GIST(GEOM);

-- 카테고리 인덱스 (유형별 필터링)
CREATE INDEX IF NOT EXISTS IDX_SR_CATEGORY ON SENSITIVE_RESOURCE (CATEGORY);

-- JSONB 인덱스 (properties 내부 검색용)
CREATE INDEX IF NOT EXISTS IDX_SR_PROPERTIES ON SENSITIVE_RESOURCE USING GIN(PROPERTIES);

-- 카테고리 + 공간 복합 조회 최적화
CREATE INDEX IF NOT EXISTS IDX_SR_CATEGORY_GEOM ON SENSITIVE_RESOURCE USING GIST(GEOM) WHERE CATEGORY IS NOT NULL;

COMMENT ON TABLE  SENSITIVE_RESOURCE              IS '민감자원 통합 테이블';
COMMENT ON COLUMN SENSITIVE_RESOURCE.SR_ID         IS '민감자원 ID';
COMMENT ON COLUMN SENSITIVE_RESOURCE.CATEGORY      IS '민감자원 유형 (양식장, 해수욕장, 무역항, 어항, 해안선_ESI 등)';
COMMENT ON COLUMN SENSITIVE_RESOURCE.GEOM          IS '공간 데이터 (EPSG:4326)';
COMMENT ON COLUMN SENSITIVE_RESOURCE.PROPERTIES    IS '원본 GeoJSON properties (JSONB)';
COMMENT ON COLUMN SENSITIVE_RESOURCE.REG_DT        IS '등록일시';
COMMENT ON COLUMN SENSITIVE_RESOURCE.MOD_DT        IS '수정일시';
