-- ================================================================
-- 001: LAYER 테이블 생성 (SQLite layers.db → PostgreSQL wing DB 마이그레이션)
-- ================================================================
-- 기존 SQLite layers 테이블의 데이터를 PostgreSQL wing DB로 이전
-- 공공데이터베이스 표준화 관리 매뉴얼(2021.06) 네이밍 적용
-- ================================================================

CREATE TABLE IF NOT EXISTS LAYER (
  LAYER_CD      VARCHAR(50)   NOT NULL,  -- 레이어코드 (기존 cmn_cd)
  UP_LAYER_CD   VARCHAR(50),             -- 상위레이어코드 (기존 up_cmn_cd)
  LAYER_FULL_NM VARCHAR(200)  NOT NULL,  -- 레이어전체명 (기존 cmn_cd_full_nm)
  LAYER_NM      VARCHAR(100)  NOT NULL,  -- 레이어명 (기존 cmn_cd_nm)
  LAYER_LEVEL   INTEGER       NOT NULL,  -- 레이어레벨 (기존 cmn_cd_level)
  WMS_LAYER_NM  VARCHAR(100),            -- WMS레이어명 (기존 clnm)
  USE_YN        CHAR(1)       NOT NULL DEFAULT 'Y',  -- 사용여부
  SORT_ORD      INTEGER       DEFAULT 0,             -- 정렬순서
  REG_DTM       TIMESTAMPTZ   NOT NULL DEFAULT NOW(), -- 등록일시
  DEL_YN CHAR(1) DEFAULT 'N' NOT NULL,
  CONSTRAINT PK_LAYER PRIMARY KEY (LAYER_CD),
  CONSTRAINT FK_LAYER_UP FOREIGN KEY (UP_LAYER_CD) REFERENCES LAYER(LAYER_CD),
  CONSTRAINT CK_LAYER_USE_YN CHECK (USE_YN IN ('Y', 'N'))
);

COMMENT ON TABLE  LAYER IS '레이어';
COMMENT ON COLUMN LAYER.LAYER_CD      IS '레이어코드 (예: LYR001001)';
COMMENT ON COLUMN LAYER.UP_LAYER_CD   IS '상위레이어코드 (상위 레이어 참조)';
COMMENT ON COLUMN LAYER.LAYER_FULL_NM IS '레이어전체명 (계층 경로 포함 전체 명칭)';
COMMENT ON COLUMN LAYER.LAYER_NM      IS '레이어명 (표시용 짧은 명칭)';
COMMENT ON COLUMN LAYER.LAYER_LEVEL   IS '레이어레벨 (1:최상위, 2:중분류, 3:소분류 ...)';
COMMENT ON COLUMN LAYER.WMS_LAYER_NM  IS 'WMS레이어명 (GeoServer WMS 레이어 식별자)';
COMMENT ON COLUMN LAYER.USE_YN        IS '사용여부 (Y:사용, N:미사용)';
COMMENT ON COLUMN LAYER.SORT_ORD      IS '정렬순서';
COMMENT ON COLUMN LAYER.REG_DTM       IS '등록일시';

CREATE INDEX IF NOT EXISTS IDX_LAYER_UP    ON LAYER(UP_LAYER_CD);
CREATE INDEX IF NOT EXISTS IDX_LAYER_LEVEL ON LAYER(LAYER_LEVEL);
CREATE INDEX IF NOT EXISTS IDX_LAYER_USE   ON LAYER(USE_YN);
