-- ===================================================================== -- cafe24_db 003 — 모바일 스와이프(product-swiper.js) 편집 버전 이력 -- ===================================================================== -- 멱등(idempotent): 여러 번 실행해도 안전. DROP/TRUNCATE 없음. -- -- 실행: -- docker exec -i postgres-db psql -U postgres -d cafe24_db \ -- < scripts/sql/cafe24_db_003_swiper_revisions.sql -- -- 배경: -- product-swiper.js 는 상품이 아니라 카페24 "디자인 보관함" FTP 파일이라 -- cafe24_product_revisions(product_no NOT NULL)에 넣을 수 없다. 같은 백업/ -- 버전이력 방식을 그대로 쓰기 위한 전용 테이블. file_key 는 앞으로 비슷한 -- 디자인 파일 편집기가 더 생길 경우를 대비한 구분자다(현재는 한 값만 쓴다). -- ===================================================================== \set ON_ERROR_STOP on CREATE TABLE IF NOT EXISTS cafe24_swiper_revisions ( id BIGSERIAL PRIMARY KEY, file_key TEXT NOT NULL DEFAULT 'product-swiper', content TEXT NOT NULL DEFAULT '', revision_type TEXT NOT NULL DEFAULT 'MANUAL', memo TEXT NOT NULL DEFAULT '', created_by TEXT NOT NULL DEFAULT '', created_at TIMESTAMPTZ NOT NULL DEFAULT now(), CONSTRAINT chk_cafe24_swiper_revision_type CHECK ( revision_type IN ('SYNC','DRAFT','BACKUP','MANUAL','SCHEDULED','ROLLBACK') ) ); CREATE INDEX IF NOT EXISTS idx_cafe24_swiper_revisions_key ON cafe24_swiper_revisions (file_key, created_at DESC, id DESC); GRANT SELECT, INSERT, UPDATE, DELETE ON cafe24_swiper_revisions TO cafe24_app; GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO cafe24_app; SELECT 'cafe24_db 003 applied' AS status;