| import useSWR from "swr"; | |
| import queryString from "query-string"; | |
| import fetcher from "./fetcher"; | |
| export interface BuildkiteBuildStatsParams { | |
| branch?: string; | |
| from?: string; | |
| } | |
| export interface BuildkiteBuildStats { | |
| org: string; | |
| pipeline: string; | |
| items: Array<BuildkiteBuildStatsItem>; | |
| } | |
| export interface BuildkiteBuildStatsItem { | |
| buildNumber: number; | |
| createdAt: string; | |
| branch: string; | |
| state: string; | |
| waitTime: number; | |
| runTime: number; | |
| } | |
| export function useBuildkiteBuildStats( | |
| org: string, | |
| pipeline: string, | |
| params: BuildkiteBuildStatsParams | |
| ) { | |
| const { data, error } = useSWR( | |
| queryString.stringifyUrl( | |
| { | |
| url: `/api/buildkite/organizations/${org}/pipelines/${pipeline}/stats`, | |
| query: params as any, | |
| }, | |
| { skipNull: true } | |
| ), | |
| fetcher | |
| ); | |
| return { | |
| data: data as BuildkiteBuildStats, | |
| error, | |
| loading: !error && !data, | |
| }; | |
| } | |
| export function useBuildkitePipelineBranches(org: string, pipeline: string) { | |
| const { data, error } = useSWR( | |
| queryString.stringifyUrl( | |
| { | |
| url: `/api/buildkite/organizations/${org}/pipelines/${pipeline}/branches`, | |
| }, | |
| { skipNull: true } | |
| ), | |
| fetcher | |
| ); | |
| return { | |
| data: data as string[], | |
| error, | |
| loading: !error && !data, | |
| }; | |
| } |