Cleanup api docs and ts api-client options (#3663)

This commit is contained in:
Anbraten
2024-05-01 11:50:41 +02:00
committed by GitHub
parent 4d2610c22e
commit dbd91d3884
34 changed files with 207 additions and 189 deletions

View File

@@ -158,7 +158,7 @@ const selectedAgent = ref<Partial<Agent>>();
const isEditingAgent = computed(() => !!selectedAgent.value?.id);
async function loadAgents(page: number): Promise<Agent[] | null> {
return apiClient.getAgents(page);
return apiClient.getAgents({ page });
}
const { resetPage, data: agents } = usePagination(loadAgents, () => !selectedAgent.value);

View File

@@ -50,7 +50,7 @@ const notifications = useNotifications();
const { t } = useI18n();
async function loadOrgs(page: number): Promise<Org[] | null> {
return apiClient.getOrgs(page);
return apiClient.getOrgs({ page });
}
const { resetPage, data: orgs } = usePagination(loadOrgs);

View File

@@ -56,7 +56,7 @@ const notifications = useNotifications();
const i18n = useI18n();
async function loadRepos(page: number): Promise<Repo[] | null> {
return apiClient.getAllRepos(page);
return apiClient.getAllRepos({ page });
}
const { data: repos } = usePagination(loadRepos);

View File

@@ -65,7 +65,7 @@ const selectedSecret = ref<Partial<Secret>>();
const isEditingSecret = computed(() => !!selectedSecret.value?.id);
async function loadSecrets(page: number): Promise<Secret[] | null> {
return apiClient.getGlobalSecretList(page);
return apiClient.getGlobalSecretList({ page });
}
const { resetPage, data: secrets } = usePagination(loadSecrets, () => !selectedSecret.value);

View File

@@ -107,7 +107,7 @@ const selectedUser = ref<Partial<User>>();
const isEditingUser = computed(() => !!selectedUser.value?.id);
async function loadUsers(page: number): Promise<User[] | null> {
return apiClient.getUsers(page);
return apiClient.getUsers({ page });
}
const { resetPage, data: users } = usePagination(loadUsers, () => !selectedUser.value);

View File

@@ -90,7 +90,7 @@ const pipelineOptions = computed(() => {
const loading = ref(true);
onMounted(async () => {
const data = await usePaginate((page) => apiClient.getRepoBranches(repo.value.id, page));
const data = await usePaginate((page) => apiClient.getRepoBranches(repo.value.id, { page }));
branches.value = data.map((e) => ({
text: e,
value: e,

View File

@@ -69,7 +69,7 @@ async function loadSecrets(page: number): Promise<Secret[] | null> {
throw new Error("Unexpected: Can't load org");
}
return apiClient.getOrgSecretList(org.value.id, page);
return apiClient.getOrgSecretList(org.value.id, { page });
}
const { resetPage, data: secrets } = usePagination(loadSecrets, () => !selectedSecret.value);

View File

@@ -70,7 +70,7 @@ async function loadBranches() {
throw new Error('Unexpected: "repo" should be provided at this place');
}
branches.value = (await usePaginate((page) => apiClient.getRepoBranches(repo.value.id, page)))
branches.value = (await usePaginate((page) => apiClient.getRepoBranches(repo.value.id, { page })))
.map((b) => ({
value: b,
text: b,

View File

@@ -121,7 +121,7 @@ async function loadCrons(page: number): Promise<Cron[] | null> {
throw new Error("Unexpected: Can't load repo");
}
return apiClient.getCronList(repo.value.id, page);
return apiClient.getCronList(repo.value.id, { page });
}
const { resetPage, data: crons } = usePagination(loadCrons, () => !selectedCron.value);

View File

@@ -104,7 +104,7 @@ async function loadRegistries(page: number): Promise<Registry[] | null> {
throw new Error("Unexpected: Can't load repo");
}
return apiClient.getRegistryList(repo.value.id, page);
return apiClient.getRegistryList(repo.value.id, { page });
}
const { resetPage, data: registries } = usePagination(loadRegistries, () => !selectedRegistry.value);

View File

@@ -71,11 +71,11 @@ async function loadSecrets(page: number, level: 'repo' | 'org' | 'global'): Prom
switch (level) {
case 'repo':
return apiClient.getSecretList(repo.value.id, page);
return apiClient.getSecretList(repo.value.id, { page });
case 'org':
return apiClient.getOrgSecretList(repo.value.org_id, page);
return apiClient.getOrgSecretList(repo.value.org_id, { page });
case 'global':
return apiClient.getGlobalSecretList(page);
return apiClient.getGlobalSecretList({ page });
default:
throw new Error(`Unexpected level: ${level}`);
}

View File

@@ -78,7 +78,7 @@ async function loadSecrets(page: number): Promise<Secret[] | null> {
throw new Error('Unexpected: Unauthenticated');
}
return apiClient.getOrgSecretList(user.org_id, page);
return apiClient.getOrgSecretList(user.org_id, { page });
}
const { resetPage, data: secrets } = usePagination(loadSecrets, () => !selectedSecret.value);

View File

@@ -34,6 +34,11 @@ type DeploymentOptions = {
variables: Record<string, string>;
};
type PaginationOptions = {
page?: number;
perPage?: number;
};
export default class WoodpeckerClient extends ApiClient {
getRepoList(opts?: RepoListOptions): Promise<Repo[]> {
const query = encodeQueryString(opts);
@@ -52,12 +57,14 @@ export default class WoodpeckerClient extends ApiClient {
return this._get(`/api/repos/${repoId}/permissions`) as Promise<RepoPermissions>;
}
getRepoBranches(repoId: number, page: number): Promise<string[]> {
return this._get(`/api/repos/${repoId}/branches?page=${page}`) as Promise<string[]>;
getRepoBranches(repoId: number, opts?: PaginationOptions): Promise<string[]> {
const query = encodeQueryString(opts);
return this._get(`/api/repos/${repoId}/branches?${query}`) as Promise<string[]>;
}
getRepoPullRequests(repoId: number, page: number): Promise<PullRequest[]> {
return this._get(`/api/repos/${repoId}/pull_requests?page=${page}`) as Promise<PullRequest[]>;
getRepoPullRequests(repoId: number, opts?: PaginationOptions): Promise<PullRequest[]> {
const query = encodeQueryString(opts);
return this._get(`/api/repos/${repoId}/pull_requests?${query}`) as Promise<PullRequest[]>;
}
activateRepo(forgeRemoteId: string): Promise<Repo> {
@@ -93,7 +100,7 @@ export default class WoodpeckerClient extends ApiClient {
return this._post(`/api/repos/${repoId}/pipelines/${pipelineNumber}?${query}`) as Promise<Pipeline>;
}
getPipelineList(repoId: number, opts?: Record<string, string | number | boolean>): Promise<Pipeline[]> {
getPipelineList(repoId: number, opts?: PaginationOptions & { before?: string; after?: string }): Promise<Pipeline[]> {
const query = encodeQueryString(opts);
return this._get(`/api/repos/${repoId}/pipelines?${query}`) as Promise<Pipeline[]>;
}
@@ -106,9 +113,8 @@ export default class WoodpeckerClient extends ApiClient {
return this._get(`/api/repos/${repoId}/pipelines/${pipelineNumber}/config`) as Promise<PipelineConfig[]>;
}
getPipelineFeed(opts?: Record<string, string | number | boolean>): Promise<PipelineFeed[]> {
const query = encodeQueryString(opts);
return this._get(`/api/user/feed?${query}`) as Promise<PipelineFeed[]>;
getPipelineFeed(): Promise<PipelineFeed[]> {
return this._get(`/api/user/feed`) as Promise<PipelineFeed[]>;
}
cancelPipeline(repoId: number, pipelineNumber: number): Promise<unknown> {
@@ -126,7 +132,7 @@ export default class WoodpeckerClient extends ApiClient {
restartPipeline(
repoId: number,
pipeline: string,
opts?: Record<string, string | number | boolean>,
opts?: { event?: string; deploy_to?: string; fork?: boolean },
): Promise<Pipeline> {
const query = encodeQueryString(opts);
return this._post(`/api/repos/${repoId}/pipelines/${pipeline}?${query}`) as Promise<Pipeline>;
@@ -140,8 +146,9 @@ export default class WoodpeckerClient extends ApiClient {
return this._delete(`/api/repos/${repoId}/logs/${pipeline}/${step}`);
}
getSecretList(repoId: number, page: number): Promise<Secret[] | null> {
return this._get(`/api/repos/${repoId}/secrets?page=${page}`) as Promise<Secret[] | null>;
getSecretList(repoId: number, opts?: PaginationOptions): Promise<Secret[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/repos/${repoId}/secrets?${query}`) as Promise<Secret[] | null>;
}
createSecret(repoId: number, secret: Partial<Secret>): Promise<unknown> {
@@ -158,8 +165,9 @@ export default class WoodpeckerClient extends ApiClient {
return this._delete(`/api/repos/${repoId}/secrets/${name}`);
}
getRegistryList(repoId: number, page: number): Promise<Registry[] | null> {
return this._get(`/api/repos/${repoId}/registry?page=${page}`) as Promise<Registry[] | null>;
getRegistryList(repoId: number, opts?: PaginationOptions): Promise<Registry[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/repos/${repoId}/registry?${query}`) as Promise<Registry[] | null>;
}
createRegistry(repoId: number, registry: Partial<Registry>): Promise<unknown> {
@@ -174,8 +182,9 @@ export default class WoodpeckerClient extends ApiClient {
return this._delete(`/api/repos/${repoId}/registry/${registryAddress}`);
}
getCronList(repoId: number, page: number): Promise<Cron[] | null> {
return this._get(`/api/repos/${repoId}/cron?page=${page}`) as Promise<Cron[] | null>;
getCronList(repoId: number, opts?: PaginationOptions): Promise<Cron[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/repos/${repoId}/cron?${query}`) as Promise<Cron[] | null>;
}
createCron(repoId: number, cron: Partial<Cron>): Promise<unknown> {
@@ -206,8 +215,9 @@ export default class WoodpeckerClient extends ApiClient {
return this._get(`/api/orgs/${orgId}/permissions`) as Promise<OrgPermissions>;
}
getOrgSecretList(orgId: number, page: number): Promise<Secret[] | null> {
return this._get(`/api/orgs/${orgId}/secrets?page=${page}`) as Promise<Secret[] | null>;
getOrgSecretList(orgId: number, opts?: PaginationOptions): Promise<Secret[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/orgs/${orgId}/secrets?${query}`) as Promise<Secret[] | null>;
}
createOrgSecret(orgId: number, secret: Partial<Secret>): Promise<unknown> {
@@ -224,8 +234,9 @@ export default class WoodpeckerClient extends ApiClient {
return this._delete(`/api/orgs/${orgId}/secrets/${name}`);
}
getGlobalSecretList(page: number): Promise<Secret[] | null> {
return this._get(`/api/secrets?page=${page}`) as Promise<Secret[] | null>;
getGlobalSecretList(opts?: PaginationOptions): Promise<Secret[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/secrets?${query}`) as Promise<Secret[] | null>;
}
createGlobalSecret(secret: Partial<Secret>): Promise<unknown> {
@@ -250,8 +261,9 @@ export default class WoodpeckerClient extends ApiClient {
return this._post('/api/user/token') as Promise<string>;
}
getAgents(page: number): Promise<Agent[] | null> {
return this._get(`/api/agents?page=${page}`) as Promise<Agent[] | null>;
getAgents(opts?: PaginationOptions): Promise<Agent[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/agents?${query}`) as Promise<Agent[] | null>;
}
getAgent(agentId: Agent['id']): Promise<Agent> {
@@ -282,8 +294,9 @@ export default class WoodpeckerClient extends ApiClient {
return this._post('/api/queue/resume');
}
getUsers(page: number): Promise<User[] | null> {
return this._get(`/api/users?page=${page}`) as Promise<User[] | null>;
getUsers(opts?: PaginationOptions): Promise<User[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/users?${query}`) as Promise<User[] | null>;
}
getUser(username: string): Promise<User> {
@@ -306,16 +319,18 @@ export default class WoodpeckerClient extends ApiClient {
return this._delete('/api/user/token') as Promise<string>;
}
getOrgs(page: number): Promise<Org[] | null> {
return this._get(`/api/orgs?page=${page}`) as Promise<Org[] | null>;
getOrgs(opts?: PaginationOptions): Promise<Org[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/orgs?${query}`) as Promise<Org[] | null>;
}
deleteOrg(org: Org): Promise<unknown> {
return this._delete(`/api/orgs/${org.id}`);
}
getAllRepos(page: number): Promise<Repo[] | null> {
return this._get(`/api/repos?page=${page}`) as Promise<Repo[] | null>;
getAllRepos(opts?: PaginationOptions): Promise<Repo[] | null> {
const query = encodeQueryString(opts);
return this._get(`/api/repos?${query}`) as Promise<Repo[] | null>;
}
repairAllRepos(): Promise<unknown> {

View File

@@ -46,8 +46,8 @@ export const usePipelineStore = defineStore('pipelines', () => {
setPipeline(repoId, pipeline);
}
async function loadRepoPipelines(repoId: number) {
const _pipelines = await apiClient.getPipelineList(repoId);
async function loadRepoPipelines(repoId: number, page?: number) {
const _pipelines = await apiClient.getPipelineList(repoId, { page });
_pipelines.forEach((pipeline) => {
setPipeline(repoId, pipeline);
});

View File

@@ -41,7 +41,7 @@ async function loadBranches(page: number): Promise<string[]> {
throw new Error('Unexpected: "repo" should be provided at this place');
}
return apiClient.getRepoBranches(repo.value.id, page);
return apiClient.getRepoBranches(repo.value.id, { page });
}
const { resetPage, data: branches, loading } = usePagination(loadBranches);

View File

@@ -48,7 +48,7 @@ async function loadPullRequests(page: number): Promise<PullRequest[]> {
throw new Error('Unexpected: "repo" should be provided at this place');
}
return apiClient.getRepoPullRequests(repo.value.id, page);
return apiClient.getRepoPullRequests(repo.value.id, { page });
}
const { resetPage, data: pullRequests, loading } = usePagination(loadPullRequests);