大声道撒旦

This commit is contained in:
dengqichen 2025-01-09 17:12:22 +08:00
parent 465d71d74e
commit 20df7a8488
3 changed files with 34 additions and 21 deletions

View File

@ -53,7 +53,10 @@ public class RepositoryBranch extends Entity<Long> {
private String webUrl;
@Column(name = "project_id", nullable = false)
private Long projectId;
private Long projectId; // 我们数据库的project表的ID
@Column(name = "git_project_id", nullable = false)
private Long gitProjectId; // GitLab的真实project_id
@Column(name = "external_system_id", nullable = false)
private Long externalSystemId;

View File

@ -129,9 +129,10 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl<RepositoryBranc
for (RepositoryProject project : projects) {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try {
log.info("Syncing branches for project: {} (ID: {})", project.getName(), project.getProjectId());
log.info("Syncing branches for project: {} (ID: {}, GitLab ID: {})",
project.getName(), project.getId(), project.getProjectId());
// 4.1 获取当前项目在GitLab上的所有分支
// 4.1 获取当前项目在GitLab上的所有分支使用GitLab的真实project_id
List<GitBranchResponse> remoteBranches = gitServiceIntegration.branches(externalSystem, project.getProjectId());
log.info("Found {} remote branches for project: {}", remoteBranches.size(), project.getName());
@ -167,7 +168,8 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl<RepositoryBranc
log.info("Completed processing {} branches for project: {}", remoteBranches.size(), project.getName());
} catch (Exception e) {
log.error("Failed to sync branches for project: {} (ID: {})", project.getName(), project.getProjectId(), e);
log.error("Failed to sync branches for project: {} (ID: {}, GitLab ID: {})",
project.getName(), project.getId(), project.getProjectId(), e);
throw new RuntimeException(e);
}
}, executor);
@ -211,9 +213,14 @@ public class RepositoryBranchServiceImpl extends BaseServiceImpl<RepositoryBranc
RepositoryBranch branch = existingBranchMap.getOrDefault(remoteBranch.getName(), new RepositoryBranch());
// 获取对应的RepositoryProject以获取GitLab的真实project_id
RepositoryProject project = repositoryProjectRepository.findById(projectId)
.orElseThrow(() -> new BusinessException(ResponseCode.REPOSITORY_PROJECT_NOT_FOUND));
// 更新基本信息
branch.setExternalSystemId(externalSystemId);
branch.setProjectId(projectId);
branch.setProjectId(projectId); // 设置我们数据库的project ID
branch.setGitProjectId(project.getProjectId()); // 设置GitLab的真实project ID
branch.setName(remoteBranch.getName());
branch.setIsDefaultBranch(remoteBranch.getIsDefaultBranch());
branch.setCanPush(remoteBranch.getCanPush());

View File

@ -339,17 +339,8 @@ CREATE TABLE deploy_repo_branch
(
-- 基础字段
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
create_by VARCHAR(100) NULL COMMENT '创建人',
create_time DATETIME(6) NULL COMMENT '创建时间',
update_by VARCHAR(100) NULL COMMENT '更新人',
update_time DATETIME(6) NULL COMMENT '更新时间',
version INT NOT NULL DEFAULT 1 COMMENT '版本号',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除0-未删除1-已删除',
-- 业务字段
name VARCHAR(100) NOT NULL COMMENT '分支名称',
project_id BIGINT NOT NULL COMMENT '所属项目ID',
external_system_id BIGINT NOT NULL COMMENT '外部系统ID',
is_default_branch BIT DEFAULT 0 COMMENT '是否为默认分支0-否1-是',
can_push BIT DEFAULT 1 COMMENT '是否可推送0-否1-是',
developers_can_push BIT DEFAULT 1 COMMENT '开发者是否可推送0-否1-是',
@ -360,9 +351,21 @@ CREATE TABLE deploy_repo_branch
commit_date DATETIME(6) NULL COMMENT '最新提交时间',
last_update_time DATETIME(6) NULL COMMENT '分支最后更新时间',
last_commit_time DATETIME(6) NULL COMMENT '分支最后提交时间',
web_url VARCHAR(255) NULL COMMENT '网页URL'
web_url VARCHAR(255) NULL COMMENT '网页URL',
project_id BIGINT NOT NULL COMMENT '所属项目ID',
external_system_id BIGINT NOT NULL COMMENT '外部系统ID',
git_project_id BIGINT NOT NULL COMMENT 'GitLab的真实project_id',
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代码仓库分支表';
create_by VARCHAR(100) NULL COMMENT '创建人',
create_time DATETIME(6) NULL COMMENT '创建时间',
update_by VARCHAR(100) NULL COMMENT '更新人',
update_time DATETIME(6) NULL COMMENT '更新时间',
version INT NOT NULL DEFAULT 1 COMMENT '版本号',
deleted BIT NOT NULL DEFAULT 0 COMMENT '是否删除0-未删除1-已删除'
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='代码仓库分支表';
-- --------------------------------------------------------------------------------------
-- 工作流相关表