-- ===================================================================== -- cupang_db 마이그레이션 003 — 박스 계산 임시 저장 (cupang_box_calc_drafts) -- ===================================================================== -- 사유: 박스 계산 화면(①입력 / ②요약 / ③센터 분배)의 작업 중 상태를 -- 이름 붙여 서버에 저장하고 나중에 다시 불러오기 위함. -- payload 는 화면 상태 스냅샷(JSONB): 입력 품목·열어둔 센터·분배 내역. -- 박스 수 계산 자체는 불러온 뒤 서버에서 다시 수행한다(값 신뢰 안 함). -- -- 멱등: CREATE TABLE IF NOT EXISTS / CREATE INDEX IF NOT EXISTS. -- 기존 데이터를 지우지 않는다. DROP/TRUNCATE 없음. -- -- 실행: -- docker exec -i postgres-db psql -U postgres -d cupang_db \ -- < /opt/www/main/scripts/sql/cupang_db_003_box_calc_drafts.sql -- -- 확인: -- docker exec -i postgres-db psql -U postgres -d cupang_db \ -- -c "\d cupang_box_calc_drafts" -- ===================================================================== \set ON_ERROR_STOP on \connect cupang_db CREATE TABLE IF NOT EXISTS cupang_box_calc_drafts ( id BIGSERIAL PRIMARY KEY, title TEXT NOT NULL, payload JSONB NOT NULL DEFAULT '{}'::jsonb, created_by TEXT NOT NULL DEFAULT '', created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE INDEX IF NOT EXISTS idx_cupang_box_calc_drafts_updated ON cupang_box_calc_drafts (updated_at DESC); DROP TRIGGER IF EXISTS trg_cupang_box_calc_drafts_updated ON cupang_box_calc_drafts; CREATE TRIGGER trg_cupang_box_calc_drafts_updated BEFORE UPDATE ON cupang_box_calc_drafts FOR EACH ROW EXECUTE FUNCTION cupang_set_updated_at(); -- 앱 계정 권한 (init 스크립트와 동일하게 CRUD 만) GRANT SELECT, INSERT, UPDATE, DELETE ON cupang_box_calc_drafts TO cupang_app; GRANT USAGE, SELECT ON SEQUENCE cupang_box_calc_drafts_id_seq TO cupang_app; SELECT 'cupang_db 003 done' AS status;