diff --git a/db/migrations/031_orders_wipe_legacy.sql b/db/migrations/031_orders_wipe_legacy.sql new file mode 100644 index 0000000..9d46b57 --- /dev/null +++ b/db/migrations/031_orders_wipe_legacy.sql @@ -0,0 +1,37 @@ +-- 옛 발주 전체 삭제 (사용자 명시 요청 2026-05-13) +-- ⚠️ migrate-momo.mjs 는 매 deploy 시 모든 .sql 을 재실행 → DELETE 가 매번 실행되면 +-- 신규 발주가 다음 deploy 때 또 지워지는 사고가 남. +-- → sentinel 테이블 momo_migration_marks 로 1회만 실행 보장. +-- +-- 삭제 범위: +-- 1) momo_einvoice_items (발주연결 세금계산서의 라인) +-- 2) momo_einvoices (order_objid IS NOT NULL — 발주 연결분만) +-- 3) momo_stock_moves (ref_type='ORDER' — 출고 차감 이력) +-- 4) momo_order_items (발주 라인) +-- 5) momo_orders (발주 본체) +-- +-- 보존: momo_stocks.qty (현재고는 그대로 — 사용자가 inventory 메뉴에서 직접 보정). + +CREATE TABLE IF NOT EXISTS momo_migration_marks ( + mark VARCHAR(100) PRIMARY KEY, + regdate TIMESTAMP DEFAULT NOW() +); + +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM momo_migration_marks WHERE mark = '031_orders_wipe_legacy') THEN + + DELETE FROM momo_einvoice_items + WHERE einvoice_objid IN ( + SELECT objid FROM momo_einvoices WHERE order_objid IS NOT NULL + ); + DELETE FROM momo_einvoices WHERE order_objid IS NOT NULL; + DELETE FROM momo_stock_moves WHERE ref_type = 'ORDER'; + DELETE FROM momo_order_items; + DELETE FROM momo_orders; + + INSERT INTO momo_migration_marks(mark) VALUES ('031_orders_wipe_legacy'); + + RAISE NOTICE '[031] 옛 발주 전체 삭제 완료'; + END IF; +END $$;