zhaoyingbo 71461a04df
All checks were successful
CI Monitor CI/CD / build-image (push) Successful in 28s
CI Monitor CI/CD / deploy (push) Successful in 28s
feat: 更新GitLab API调用方法
2024-07-01 12:33:40 +00:00

57 lines
1.5 KiB
TypeScript

import db from "../../db";
import { ProjectRecordModel } from "../../db/project";
import service from "../../service";
/**
* 填充项目信息
*/
const fillProj = async (project: ProjectRecordModel) => {
const projDetail = await service.gitlab.fetchProjectDetails(
project.project_id
);
if (!projDetail) {
return project;
}
const useFulParams: Partial<ProjectRecordModel> = {
...project,
avatar_url: projDetail.avatar_url,
description: projDetail.description,
name: projDetail.name,
path_with_namespace: projDetail.path_with_namespace,
web_url: projDetail.web_url,
};
return await db.project.update(project.id, useFulParams);
};
/**
* 获取到当前所有的项目列表
* 并把信息不全的项目送给fillProj填充内容
*/
const getFullProjList = async () => {
const fullList = await db.project.getFullList();
// 把信息不全的项目送过去填充
const filledProjList = await Promise.all(
fullList.filter((v) => !v.name).map((item) => fillProj(item))
);
// 合并成完整数据
const filledFullProjList = fullList
.filter((v) => v.name)
.concat(filledProjList);
return filledFullProjList;
};
const getFullProjectMap = (fullProjList: ProjectRecordModel[]) => {
const fullProjectMap: Record<string, string> = {};
fullProjList.forEach((item) => {
fullProjectMap[item.project_id] = item.id;
});
return fullProjectMap;
};
const manageProject = {
getFullProjList,
getFullProjectMap,
};
export default manageProject;