reposync/issue_sync/sql/gitlink_gitee_pr_tables.sql

121 lines
7.2 KiB
SQL

-- GitLink-Gitee PR同步相关表
-- GitLink-Gitee PR同步配置表
CREATE TABLE IF NOT EXISTS gitlink_gitee_pr_config (
id INT AUTO_INCREMENT PRIMARY KEY,
gitlink_owner VARCHAR(100) NOT NULL COMMENT 'GitLink仓库拥有者',
gitlink_repo VARCHAR(100) NOT NULL COMMENT 'GitLink仓库名',
gitlink_cookie TEXT NOT NULL COMMENT 'GitLink认证Cookie',
gitee_owner VARCHAR(100) NOT NULL COMMENT 'Gitee仓库拥有者',
gitee_repo VARCHAR(100) NOT NULL COMMENT 'Gitee仓库名',
gitee_token VARCHAR(255) NOT NULL COMMENT 'Gitee访问令牌',
sync_direction ENUM('gitlink_to_gitee', 'gitee_to_gitlink', 'bidirectional') DEFAULT 'bidirectional' COMMENT '同步方向',
sync_comments BOOLEAN DEFAULT TRUE COMMENT '是否同步评论',
enabled BOOLEAN DEFAULT TRUE COMMENT '是否启用',
auto_sync BOOLEAN DEFAULT FALSE COMMENT '是否自动同步',
sync_interval INT DEFAULT 300 COMMENT '同步间隔(秒)',
last_sync_time DATETIME DEFAULT NULL COMMENT '最后同步时间',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_enabled (enabled),
INDEX idx_auto_sync (auto_sync),
INDEX idx_repos (gitlink_owner, gitlink_repo, gitee_owner, gitee_repo)
) COMMENT='GitLink-Gitee PR同步配置表';
-- GitLink-Gitee PR映射表
CREATE TABLE IF NOT EXISTS gitlink_gitee_pr_mapping (
id INT AUTO_INCREMENT PRIMARY KEY,
source_platform ENUM('gitlink', 'gitee') NOT NULL COMMENT '源平台',
source_pr_id VARCHAR(50) NOT NULL COMMENT '源平台PR ID',
target_platform ENUM('gitlink', 'gitee') NOT NULL COMMENT '目标平台',
target_pr_id VARCHAR(50) NOT NULL COMMENT '目标平台PR ID',
pr_title VARCHAR(500) NOT NULL COMMENT 'PR标题',
pr_state VARCHAR(20) DEFAULT 'open' COMMENT 'PR状态',
sync_direction ENUM('gitlink_to_gitee', 'gitee_to_gitlink') NOT NULL COMMENT '同步方向',
last_sync_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '最后同步时间',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_source_target (source_platform, source_pr_id, target_platform, target_pr_id),
INDEX idx_source (source_platform, source_pr_id),
INDEX idx_target (target_platform, target_pr_id),
INDEX idx_sync_time (last_sync_time)
) COMMENT='GitLink-Gitee PR映射表';
-- GitLink-Gitee PR评论映射表
CREATE TABLE IF NOT EXISTS gitlink_gitee_pr_comment_mapping (
id INT AUTO_INCREMENT PRIMARY KEY,
source_platform ENUM('gitlink', 'gitee') NOT NULL COMMENT '源平台',
source_pr_id VARCHAR(50) NOT NULL COMMENT '源平台PR ID',
source_comment_id VARCHAR(50) NOT NULL COMMENT '源平台评论ID',
target_platform ENUM('gitlink', 'gitee') NOT NULL COMMENT '目标平台',
target_pr_id VARCHAR(50) NOT NULL COMMENT '目标平台PR ID',
target_comment_id VARCHAR(50) NOT NULL COMMENT '目标平台评论ID',
comment_body TEXT COMMENT '评论内容',
comment_author VARCHAR(100) COMMENT '评论作者',
comment_type ENUM('general', 'line', 'review') DEFAULT 'general' COMMENT '评论类型',
commit_id VARCHAR(100) DEFAULT NULL COMMENT '提交ID(用于行评论)',
file_path VARCHAR(500) DEFAULT NULL COMMENT '文件路径(用于行评论)',
line_number INT DEFAULT NULL COMMENT '行号(用于行评论)',
sync_direction ENUM('gitlink_to_gitee', 'gitee_to_gitlink') NOT NULL COMMENT '同步方向',
last_sync_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '最后同步时间',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_source_comment_target (source_platform, source_pr_id, source_comment_id, target_platform, target_pr_id),
INDEX idx_source_comment (source_platform, source_pr_id, source_comment_id),
INDEX idx_target_comment (target_platform, target_pr_id, target_comment_id),
INDEX idx_sync_time (last_sync_time)
) COMMENT='GitLink-Gitee PR评论映射表';
-- GitLink-Gitee PR同步日志表
CREATE TABLE IF NOT EXISTS gitlink_gitee_pr_sync_log (
id INT AUTO_INCREMENT PRIMARY KEY,
config_id INT NOT NULL COMMENT '配置ID',
sync_type ENUM('pr', 'comment', 'status') NOT NULL COMMENT '同步类型',
source_platform ENUM('gitlink', 'gitee') NOT NULL COMMENT '源平台',
source_pr_id VARCHAR(50) COMMENT '源平台PR ID',
target_platform ENUM('gitlink', 'gitee') NOT NULL COMMENT '目标平台',
target_pr_id VARCHAR(50) COMMENT '目标平台PR ID',
sync_direction ENUM('gitlink_to_gitee', 'gitee_to_gitlink') NOT NULL COMMENT '同步方向',
status ENUM('success', 'failed', 'skipped') NOT NULL COMMENT '同步状态',
message TEXT COMMENT '同步消息',
error_details TEXT COMMENT '错误详情',
sync_duration_ms INT DEFAULT NULL COMMENT '同步耗时(毫秒)',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_config_id (config_id),
INDEX idx_sync_type (sync_type),
INDEX idx_status (status),
INDEX idx_created_at (created_at),
INDEX idx_source_target (source_platform, target_platform),
FOREIGN KEY (config_id) REFERENCES gitlink_gitee_pr_config(id) ON DELETE CASCADE
) COMMENT='GitLink-Gitee PR同步日志表';
-- GitLink-Gitee PR同步统计表
CREATE TABLE IF NOT EXISTS gitlink_gitee_pr_sync_stats (
id INT AUTO_INCREMENT PRIMARY KEY,
config_id INT NOT NULL COMMENT '配置ID',
sync_date DATE NOT NULL COMMENT '同步日期',
sync_direction ENUM('gitlink_to_gitee', 'gitee_to_gitlink', 'bidirectional') NOT NULL COMMENT '同步方向',
total_prs_synced INT DEFAULT 0 COMMENT '同步的PR总数',
total_comments_synced INT DEFAULT 0 COMMENT '同步的评论总数',
successful_syncs INT DEFAULT 0 COMMENT '成功同步次数',
failed_syncs INT DEFAULT 0 COMMENT '失败同步次数',
skipped_syncs INT DEFAULT 0 COMMENT '跳过同步次数',
avg_sync_duration_ms INT DEFAULT NULL COMMENT '平均同步耗时(毫秒)',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_config_date_direction (config_id, sync_date, sync_direction),
INDEX idx_config_id (config_id),
INDEX idx_sync_date (sync_date),
FOREIGN KEY (config_id) REFERENCES gitlink_gitee_pr_config(id) ON DELETE CASCADE
) COMMENT='GitLink-Gitee PR同步统计表';
-- 插入示例数据
INSERT INTO gitlink_gitee_pr_config (
gitlink_owner, gitlink_repo, gitlink_cookie,
gitee_owner, gitee_repo, gitee_token,
sync_direction, sync_comments, enabled, auto_sync, sync_interval
) VALUES (
'example_owner', 'example_repo', 'autologin_trustie=your_cookie_here',
'example_owner', 'example_repo', 'your_gitee_token_here',
'bidirectional', TRUE, TRUE, FALSE, 300
) ON DUPLICATE KEY UPDATE updated_at = CURRENT_TIMESTAMP;