Files
life-echo/api/migrations_legacy/add_chapter_sections.sql

43 lines
1.8 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 章节拆分为 chapter_sections每段正文 + 配图独立存储chapters 只保留封面图
-- 执行顺序: 1) 本文件 2) python -m scripts.migrate_chapters_to_sections
-- 执行方式: psql -U <user> -d <database> -f api/migrations/add_chapter_sections.sql
-- ========== 1. 新建 chapter_sections 表 ==========
CREATE TABLE IF NOT EXISTS chapter_sections (
id VARCHAR NOT NULL PRIMARY KEY,
chapter_id VARCHAR NOT NULL REFERENCES chapters(id) ON DELETE CASCADE,
order_index INTEGER NOT NULL,
content TEXT NOT NULL,
image JSONB,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS ix_chapter_sections_chapter_id ON chapter_sections(chapter_id);
CREATE INDEX IF NOT EXISTS ix_chapter_sections_order ON chapter_sections(chapter_id, order_index);
-- 若 chapter_sections 已存在且已提前切换到 image_id 结构,重跑迁移时需要临时补回 image 列,
-- 以便后续 Python 脚本先完成 JSON -> memoir_images 的数据搬迁。
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'chapter_sections'
AND column_name = 'image'
) THEN
ALTER TABLE chapter_sections ADD COLUMN image JSONB;
RAISE NOTICE '已补回 chapter_sections.image供数据迁移使用';
END IF;
END $$;
-- ========== 2. chapters 表增加 cover_image ==========
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'chapters' AND column_name = 'cover_image') THEN
ALTER TABLE chapters ADD COLUMN cover_image JSONB;
RAISE NOTICE '已添加 chapters.cover_image';
END IF;
END $$;
-- ========== 3. 回填与删列由脚本 scripts.migrate_chapters_to_sections 完成 ==========