diff --git a/apps/api/src/routers/projects.ts b/apps/api/src/routers/projects.ts index f3006d90..9aa16cb2 100644 --- a/apps/api/src/routers/projects.ts +++ b/apps/api/src/routers/projects.ts @@ -21,6 +21,7 @@ const filterPropsSchema = z.object({ .optional(), pushed: z.string().optional(), created: z.string().optional(), + repoName: z.string().optional() }); const optionsSchema = z.object({ diff --git a/apps/api/src/services/project.service.ts b/apps/api/src/services/project.service.ts index 7ae4d5e9..0981dff1 100644 --- a/apps/api/src/services/project.service.ts +++ b/apps/api/src/services/project.service.ts @@ -47,6 +47,10 @@ export const projectService = { queryParts.push(`created:${filters.created}`); } + if(filters.repoName) { + const trimmedRepoName = filters.repoName.trim(); + queryParts.push(`${trimmedRepoName} in:name`) + } // Default fields to filter contributor friendly repos queryParts.push(`is:organization`); queryParts.push(`is:public`); diff --git a/apps/web/src/components/ui/FiltersContainer.tsx b/apps/web/src/components/ui/FiltersContainer.tsx index 84c92feb..2d6cbc6f 100644 --- a/apps/web/src/components/ui/FiltersContainer.tsx +++ b/apps/web/src/components/ui/FiltersContainer.tsx @@ -25,7 +25,7 @@ export default function FiltersContainer() { const { toggleShowFilters } = useFilterStore(); const { setRenderProjects } = useRenderProjects(); - const { filters, resetFilters } = useFilterInputStore(); + const { filters, resetFilters, updateFilters } = useFilterInputStore(); const { setData, eraseData } = useProjectsData(); const { setProjectsNotFound } = useProjectsNotFoundStore(); const getProjects = useGetProjects(); @@ -80,6 +80,16 @@ export default function FiltersContainer() { {/* Filter Content */}
+
+ { + updateFilters({repoName: e.target.value}) + }} + /> +
=2024-12-08", // created: ">=2024-12-12", +// reponame: "name" // }; export const convertUserInputToApiInput = ( @@ -133,7 +135,9 @@ export const convertUserInputToApiInput = ( if (filter.Stage) { data.created = userInputValues.Stage[filter.Stage as keyof StageProps]; } - + if(filter.repoName) { + data.repoName = filter.repoName.trim() + } return data as FilterProps; }; diff --git a/packages/shared/types/filter.ts b/packages/shared/types/filter.ts index 602d3086..9bbee3f7 100644 --- a/packages/shared/types/filter.ts +++ b/packages/shared/types/filter.ts @@ -20,4 +20,5 @@ export type FilterProps = { forks?: ForkRange; pushed?: string; created?: string; + repoName?: string } \ No newline at end of file