Initial commit: PAR Server with Spring Boot 3.2, MyBatis-Plus, Flyway
This commit is contained in:
142
par-core/src/main/resources/db/migration/V1__init_schema.sql
Normal file
142
par-core/src/main/resources/db/migration/V1__init_schema.sql
Normal file
@@ -0,0 +1,142 @@
|
||||
-- PAR (PT Adapter Registry) Database Schema - Phase 1
|
||||
-- Flyway Migration V1: Initial schema creation
|
||||
|
||||
-- ----------------------------------------
|
||||
-- 1. accounts: 用户账户表
|
||||
-- ----------------------------------------
|
||||
CREATE TABLE accounts (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
email VARCHAR(255) NOT NULL COMMENT '邮箱地址,唯一标识',
|
||||
password_hash VARCHAR(255) NOT NULL COMMENT 'bcrypt 加密后的密码',
|
||||
display_name VARCHAR(100) COMMENT '显示昵称',
|
||||
trust_level TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '信任等级: 0=member, 1=trusted, 2=admin',
|
||||
is_active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用: 1=启用, 0=禁用',
|
||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除: 1=已删除, 0=未删除',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_email (email),
|
||||
KEY idx_trust_level (trust_level),
|
||||
KEY idx_deleted (deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户账户表';
|
||||
|
||||
-- ----------------------------------------
|
||||
-- 2. sites: 站点元信息表
|
||||
-- ----------------------------------------
|
||||
CREATE TABLE sites (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
site_id VARCHAR(64) NOT NULL COMMENT '站点唯一标识,如 pthome',
|
||||
name VARCHAR(200) NOT NULL COMMENT '站点显示名称',
|
||||
description TEXT COMMENT '站点描述',
|
||||
base_url VARCHAR(500) COMMENT '站点基础URL',
|
||||
icon_url VARCHAR(500) COMMENT '站点图标URL',
|
||||
site_type VARCHAR(50) NOT NULL DEFAULT 'private' COMMENT '站点类型: private/public/xxx',
|
||||
schema_version VARCHAR(20) NOT NULL DEFAULT '1.0.0' COMMENT '当前生效的schema版本',
|
||||
current_config_id BIGINT UNSIGNED COMMENT '当前生效的配置版本ID(site_configs.id)',
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '站点状态: active/pending/deprecated',
|
||||
submitter_id BIGINT UNSIGNED COMMENT '首次提交者账户ID',
|
||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_site_id (site_id),
|
||||
KEY idx_status (status),
|
||||
KEY idx_deleted (deleted),
|
||||
KEY idx_submitter (submitter_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站点元信息表';
|
||||
|
||||
-- ----------------------------------------
|
||||
-- 3. site_configs: 站点配置版本表
|
||||
-- ----------------------------------------
|
||||
CREATE TABLE site_configs (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
site_id VARCHAR(64) NOT NULL COMMENT '关联站点标识',
|
||||
version VARCHAR(20) NOT NULL COMMENT '配置版本号,如 1.2.3',
|
||||
config_hash VARCHAR(64) NOT NULL COMMENT '配置内容SHA-256哈希(用于校验文件完整性)',
|
||||
storage_path VARCHAR(500) NOT NULL COMMENT '静态文件存储路径(相对par.static.path)',
|
||||
file_size INT UNSIGNED COMMENT '配置文件大小(字节)',
|
||||
schema_version VARCHAR(20) NOT NULL DEFAULT '1.0.0' COMMENT 'Schema版本',
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '状态: pending/approved/rejected/deprecated',
|
||||
submitter_id BIGINT UNSIGNED COMMENT '提交者账户ID(null=匿名)',
|
||||
reviewer_id BIGINT UNSIGNED COMMENT '审核者账户ID',
|
||||
reviewed_at DATETIME COMMENT '审核时间',
|
||||
review_comment TEXT COMMENT '审核意见',
|
||||
is_latest TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否为当前最新版本: 1=是',
|
||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_site_version (site_id, version),
|
||||
KEY idx_site_id (site_id),
|
||||
KEY idx_status (status),
|
||||
KEY idx_is_latest (is_latest),
|
||||
KEY idx_deleted (deleted),
|
||||
KEY idx_submitter (submitter_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站点配置版本表';
|
||||
|
||||
-- ----------------------------------------
|
||||
-- 4. config_reviews: 配置/站点信息审核表
|
||||
-- ----------------------------------------
|
||||
CREATE TABLE config_reviews (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
review_type VARCHAR(20) NOT NULL COMMENT '审核类型: config/site_info',
|
||||
target_id BIGINT UNSIGNED NOT NULL COMMENT '审核目标ID(site_configs.id 或 sites.id)',
|
||||
site_id VARCHAR(64) NOT NULL COMMENT '关联站点标识',
|
||||
action VARCHAR(20) NOT NULL COMMENT '操作类型: create/update/delete',
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '审核状态: pending/approved/rejected',
|
||||
submitter_id BIGINT UNSIGNED COMMENT '提交者账户ID',
|
||||
reviewer_id BIGINT UNSIGNED COMMENT '审核者账户ID',
|
||||
reviewed_at DATETIME COMMENT '审核完成时间',
|
||||
review_comment TEXT COMMENT '审核意见',
|
||||
payload_snapshot JSON COMMENT '提交时的完整内容快照(站点信息或配置摘要)',
|
||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_review_type (review_type),
|
||||
KEY idx_target_id (target_id),
|
||||
KEY idx_site_id (site_id),
|
||||
KEY idx_status (status),
|
||||
KEY idx_submitter (submitter_id),
|
||||
KEY idx_deleted (deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='配置及站点信息审核表';
|
||||
|
||||
-- ----------------------------------------
|
||||
-- 5. anonymous_stats: 匿名使用统计表
|
||||
-- ----------------------------------------
|
||||
CREATE TABLE anonymous_stats (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
anonymous_id VARCHAR(64) NOT NULL COMMENT '匿名ID(邮箱SHA-256哈希前16位)',
|
||||
raw_email_hash VARCHAR(64) NOT NULL COMMENT '邮箱完整SHA-256哈希(用于注册关联)',
|
||||
first_seen_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '首次出现时间',
|
||||
last_seen_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后活跃时间',
|
||||
request_count BIGINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '累计请求次数',
|
||||
associated_account_id BIGINT UNSIGNED COMMENT '关联的注册账户ID(注册后回填)',
|
||||
client_info VARCHAR(500) COMMENT '客户端信息(User-Agent等)',
|
||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_anonymous_id (anonymous_id),
|
||||
KEY idx_raw_hash (raw_email_hash),
|
||||
KEY idx_associated (associated_account_id),
|
||||
KEY idx_deleted (deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='匿名使用统计表';
|
||||
|
||||
-- ----------------------------------------
|
||||
-- 6. verification_codes: 邮箱验证码表
|
||||
-- ----------------------------------------
|
||||
CREATE TABLE verification_codes (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
email VARCHAR(255) NOT NULL COMMENT '目标邮箱',
|
||||
code VARCHAR(10) NOT NULL COMMENT '验证码',
|
||||
purpose VARCHAR(20) NOT NULL COMMENT '用途: reset_password/change_email',
|
||||
expires_at DATETIME NOT NULL COMMENT '过期时间',
|
||||
used_at DATETIME COMMENT '使用时间',
|
||||
client_ip VARCHAR(45) COMMENT '请求IP',
|
||||
deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_email (email),
|
||||
KEY idx_code (code),
|
||||
KEY idx_expires (expires_at),
|
||||
KEY idx_deleted (deleted)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='邮箱验证码表';
|
||||
Reference in New Issue
Block a user