Quellcode durchsuchen

feat: 添加仅创建 text_storage 表的脚本

创建兼容 VARCHAR(36) ID 类型的 text_storage 表,
避免与 init.sql 中的 VARCHAR(36) 类型冲突

使用方法:
psql -U lingyue -d lingyue_zhibao -f backend/sql/text_storage_only.sql
何文松 vor 1 Monat
Ursprung
Commit
70329f5443
1 geänderte Dateien mit 36 neuen und 0 gelöschten Zeilen
  1. 36 0
      backend/sql/text_storage_only.sql

+ 36 - 0
backend/sql/text_storage_only.sql

@@ -0,0 +1,36 @@
+-- 灵越智报 v2.0 补充表结构(兼容 VARCHAR(36) ID 版本)
+-- PostgreSQL 15+
+-- 兼容 init.sql 中使用的 VARCHAR(36) ID 类型
+
+-- ============================================
+-- 6. 文本存储路径表(text_storage)
+-- 仅创建核心需要的表
+-- ============================================
+CREATE TABLE IF NOT EXISTS text_storage (
+    id VARCHAR(36) PRIMARY KEY DEFAULT replace(gen_random_uuid()::text, '-', ''),
+    document_id VARCHAR(36) NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
+    file_path VARCHAR(500) NOT NULL,
+    file_size BIGINT,
+    checksum VARCHAR(64),
+    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+);
+
+CREATE INDEX IF NOT EXISTS idx_text_storage_document_id ON text_storage(document_id);
+CREATE UNIQUE INDEX IF NOT EXISTS idx_text_storage_document_unique ON text_storage(document_id);
+
+-- 创建更新时间触发器
+CREATE OR REPLACE FUNCTION update_text_storage_updated_at()
+RETURNS TRIGGER AS $$
+BEGIN
+    NEW.updated_at = CURRENT_TIMESTAMP;
+    RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
+
+DROP TRIGGER IF EXISTS update_text_storage_updated_at ON text_storage;
+CREATE TRIGGER update_text_storage_updated_at BEFORE UPDATE ON text_storage
+    FOR EACH ROW EXECUTE FUNCTION update_text_storage_updated_at();
+
+-- 显示创建结果
+SELECT 'text_storage 表创建成功' AS result;