make orderBy direction optional

Signed-off-by: Paul Cowan <paul.cowan@cutting.scot>
This commit is contained in:
Paul Cowan
2022-10-05 21:33:59 +01:00
parent e7b90f996a
commit 0a968bb1df
4 changed files with 26 additions and 11 deletions
@@ -110,7 +110,7 @@ export const gitHubIssuesApi = (
field: 'UPDATED_AT',
direction: 'DESC',
},
}: IssuesByRepoOptions = {},
}: IssuesByRepoOptions,
): Promise<IssuesByRepo> => {
const graphql = await getOctokit();
const safeNames: Array<string> = [];
@@ -137,14 +137,17 @@ export const gitHubIssuesApi = (
// eslint-disable-next-line no-console
console.log(`
---------------------------------------------------
${createIssueByRepoQuery(repositories, itemsPerRepo, { filterBy })}
${createIssueByRepoQuery(repositories, itemsPerRepo, { filterBy, orderBy })}
---------------------------------------------------
`);
let issuesByRepo: IssuesByRepo = {};
try {
issuesByRepo = await graphql(
createIssueByRepoQuery(repositories, itemsPerRepo, { filterBy }),
createIssueByRepoQuery(repositories, itemsPerRepo, {
filterBy,
orderBy,
}),
);
} catch (e) {
if (e.data) {
@@ -168,7 +171,7 @@ export const gitHubIssuesApi = (
function formatFilterValue(value: IssuesFilters[keyof IssuesFilters]): string {
if (Array.isArray(value)) {
return `[ ${value.map(formatFilterValue).join(', ')}`;
return `[ ${value.map(formatFilterValue).join(', ')}]`;
}
return typeof value === 'string' ? `\"${value}\"` : `${value}`;
@@ -189,9 +192,9 @@ function createFilterByClause(filterBy?: IssuesFilters): string {
return [`${field}: ${value.join(', ')}`];
}
return [`${field}: ${formatFilterValue}`];
return [`${field}: ${formatFilterValue(value)}`];
})
.join(', ');
.join(', ');
}
function createIssueByRepoQuery(
@@ -32,18 +32,22 @@ import { IssuesByRepoOptions } from '../../types';
export type GitHubIssuesProps = {
itemsPerPage?: number;
itemsPerRepo?: number;
queryOptions?: IssuesByRepoOptions;
filterBy?: IssuesByRepoOptions['filterBy'];
orderBy?: IssuesByRepoOptions['orderBy'];
};
export const GitHubIssues = (props: GitHubIssuesProps) => {
const { itemsPerPage = 10, itemsPerRepo = 40, queryOptions } = props;
const { itemsPerPage = 10, itemsPerRepo = 40, filterBy, orderBy } = props;
const { repositories } = useEntityGitHubRepositories();
const {
isLoading,
gitHubIssuesByRepo: issuesByRepository,
retry,
} = useGetIssuesByRepoFromGitHub(repositories, itemsPerRepo, queryOptions);
} = useGetIssuesByRepoFromGitHub(repositories, itemsPerRepo, {
filterBy,
orderBy,
});
if (!repositories.length) {
return <NoRepositoriesInfo />;
+1 -1
View File
@@ -29,6 +29,6 @@ export interface IssuesByRepoOptions {
filterBy?: IssuesFilters;
orderBy?: {
field: 'CREATED_AT' | 'UPDATED_AT' | 'COMMENTS';
direction: 'ASC' | 'DESC';
direction?: 'ASC' | 'DESC';
};
}