operations/codeup/repositories.ts (58 lines of code) (raw):
/**
* 代码库(Repository)相关操作
*
* 概念说明:
* - 代码库(Repository)是云效平台中的代码管理单元,属于CodeUp产品
* - 代码库与项目(Project)是不同的概念,项目属于项目管理领域
* - 代码库用于存储和管理源代码,而项目用于管理工作项、迭代等
* - 请勿混淆这两个概念,它们是不同的资源类型
*/
import { z } from "zod";
import {yunxiaoRequest, buildUrl, handleRepositoryIdEncoding} from "../../common/utils.js";
import {
RepositorySchema,
GetRepositorySchema,
GetRepositoryOptions,
ListRepositoriesSchema,
ListRepositoriesOptions
} from "../../common/types.js";
/**
* 查询仓库详情
* @param organizationId
* @param repositoryId
*/
export async function getRepositoryFunc(
organizationId: string,
repositoryId: string
): Promise<z.infer<typeof RepositorySchema>> {
const encodedRepoId = handleRepositoryIdEncoding(repositoryId);
const url = `/oapi/v1/codeup/organizations/${organizationId}/repositories/${encodedRepoId}`;
const response = await yunxiaoRequest(url, {
method: "GET",
});
return RepositorySchema.parse(response);
}
/**
* 查询仓库列表
* @param organizationId
* @param page
* @param perPage
* @param orderBy
* @param sort
* @param search
* @param archived
*/
export async function listRepositoriesFunc(
organizationId: string,
page?: number,
perPage?: number,
orderBy?: string,
sort?: string,
search?: string,
archived?: boolean
): Promise<z.infer<typeof RepositorySchema>[]> {
const baseUrl = `/oapi/v1/codeup/organizations/${organizationId}/repositories`;
// Build query parameters
const queryParams: Record<string, string | number | undefined> = {};
if (page !== undefined) {
queryParams.page = page;
}
if (perPage !== undefined) {
queryParams.perPage = perPage;
}
if (orderBy !== undefined) {
queryParams.orderBy = orderBy;
}
if (sort !== undefined) {
queryParams.sort = sort;
}
if (search !== undefined) {
queryParams.search = search;
}
if (archived !== undefined) {
queryParams.archived = String(archived); // Convert boolean to string
}
// Use buildUrl function to construct URL with query parameters
const url = buildUrl(baseUrl, queryParams);
const response = await yunxiaoRequest(url, {
method: "GET",
});
// Ensure the response is an array
if (!Array.isArray(response)) {
return [];
}
// Parse each repository object
return response.map(repo => RepositorySchema.parse(repo));
}