-- ============================================================
-- 마이그레이션 005: DB 통합 (wing + wing_auth → wing 단일 DB)
--
-- 스키마 구조:
--   wing  — 운영 데이터 (LAYER, BOARD_POST, HNS_SUBSTANCE 등)
--   auth  — 인증/인가 데이터 (AUTH_USER, AUTH_ROLE 등)
--   public — PostGIS 시스템 테이블만 유지 (spatial_ref_sys)
--
-- 실행 순서:
--   1. 이 SQL을 wing DB에서 실행 (스키마 생성 + 테이블 이동)
--   2. wing_auth DB 덤프 → auth 스키마로 복원 (별도 쉘)
--   3. search_path 설정
-- ============================================================

-- Step 1: 명시적 스키마 생성
CREATE SCHEMA IF NOT EXISTS wing;
CREATE SCHEMA IF NOT EXISTS auth;

-- Step 2: 기존 public 운영 테이블을 wing 스키마로 이동
-- (PostGIS 시스템 테이블 spatial_ref_sys, topology는 public에 유지)
ALTER TABLE IF EXISTS public.layer SET SCHEMA wing;
ALTER TABLE IF EXISTS public.hns_substance SET SCHEMA wing;

-- Step 3: 기본 search_path 설정 (DB 레벨)
-- wing 사용자가 스키마 접두사 없이 양쪽 테이블 접근 가능
ALTER DATABASE wing SET search_path = wing, auth;

-- Step 4: wing 사용자에게 auth 스키마 권한 부여
-- (wing_auth 데이터 복원 후 적용)
GRANT USAGE ON SCHEMA auth TO wing;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA auth TO wing;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA auth TO wing;
ALTER DEFAULT PRIVILEGES IN SCHEMA auth GRANT ALL ON TABLES TO wing;
ALTER DEFAULT PRIVILEGES IN SCHEMA auth GRANT ALL ON SEQUENCES TO wing;

-- Step 5: wing 스키마 기본 권한
GRANT ALL PRIVILEGES ON SCHEMA wing TO wing;
ALTER DEFAULT PRIVILEGES IN SCHEMA wing GRANT ALL ON TABLES TO wing;
ALTER DEFAULT PRIVILEGES IN SCHEMA wing GRANT ALL ON SEQUENCES TO wing;

-- 검증
SELECT schemaname, tablename
FROM pg_tables
WHERE schemaname IN ('wing', 'auth')
ORDER BY schemaname, tablename;
