Files
nl-pms-api/init.sql
2026-08-15 07:41:11 +08:00

45 lines
2.9 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.
-- ============================================================
-- nl-pms-api 初始化脚本MySQL 5.7+ / 8.x
-- 用法mysql -u root -p < init.sql
-- 生产环境服务启动不执行任何建表/迁移DDL部署前必须先执行本脚本
-- 仅 dev 环境config.yaml 里 env: dev启动时才 AutoMigrate。
-- 与 view 同步服务共用 code_count 库(该库由 view/init.sql 创建,这里兜底建库)。
-- ============================================================
CREATE DATABASE IF NOT EXISTS code_count DEFAULT CHARSET utf8mb4;
USE code_count;
-- 已上传文件元数据(文件内容落盘在 storage_dir本表只存相对路径与摘要
-- 归属按 (user_id, team_id) 记录:素材库据此划定"本人 / 团队管理员 / 超管 id=1"的管理范围。
-- 索引名与 gorm AutoMigrate 的默认命名保持一致,避免 dev/prod 两套 schema 漂移。
CREATE TABLE IF NOT EXISTS pms_files(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(191) NOT NULL, -- 存储相对路径,如 2026/08/13/<随机hex>.jpg
original VARCHAR(255) NOT NULL DEFAULT '', -- 原始文件名(仅备查)
mime VARCHAR(64) NOT NULL DEFAULT '',
size BIGINT NOT NULL DEFAULT 0,
sha256 CHAR(64) NOT NULL DEFAULT '', -- 内容摘要,同归属秒传去重
user_id BIGINT NOT NULL DEFAULT 0, -- 上传者code_count 库 users 表 id0 为未知)
team_id BIGINT NOT NULL DEFAULT 0, -- 上传时所在团队teams 表 id0 为个人)
kind VARCHAR(16) NOT NULL DEFAULT '', -- avatar | content
created_at VARCHAR(32) NOT NULL DEFAULT '',
UNIQUE KEY idx_pms_files_name(name),
KEY idx_pms_files_sha256(sha256),
KEY idx_pms_files_user_id(user_id),
KEY idx_pms_files_team_id(team_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 旧版本升级:补 team_id 归属列与 user_id/team_id 索引(不存在才添加,重复执行无副作用)。
SET @sql = IF((SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='code_count' AND TABLE_NAME='pms_files' AND COLUMN_NAME='team_id')=0,
'ALTER TABLE pms_files ADD COLUMN team_id BIGINT NOT NULL DEFAULT 0 AFTER user_id', 'SELECT 1');
PREPARE st FROM @sql; EXECUTE st; DEALLOCATE PREPARE st;
SET @sql = IF((SELECT COUNT(*) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA='code_count' AND TABLE_NAME='pms_files' AND INDEX_NAME='idx_pms_files_user_id')=0,
'ALTER TABLE pms_files ADD KEY idx_pms_files_user_id(user_id)', 'SELECT 1');
PREPARE st FROM @sql; EXECUTE st; DEALLOCATE PREPARE st;
SET @sql = IF((SELECT COUNT(*) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA='code_count' AND TABLE_NAME='pms_files' AND INDEX_NAME='idx_pms_files_team_id')=0,
'ALTER TABLE pms_files ADD KEY idx_pms_files_team_id(team_id)', 'SELECT 1');
PREPARE st FROM @sql; EXECUTE st; DEALLOCATE PREPARE st;