From dfc69936f0c803c2362efa2b0d84b271de32dc4d Mon Sep 17 00:00:00 2001 From: shanoysinc Date: Mon, 6 Jul 2026 17:08:36 -0500 Subject: [PATCH] fix: Update Sponsor Selector logic to display companies without work experience records --- .../app/routes/api.companies.search.tsx | 3 ++- .../employment/queries/list-companies.ts | 25 +++++++++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/apps/admin-dashboard/app/routes/api.companies.search.tsx b/apps/admin-dashboard/app/routes/api.companies.search.tsx index a2dc41f13..c6a208d98 100644 --- a/apps/admin-dashboard/app/routes/api.companies.search.tsx +++ b/apps/admin-dashboard/app/routes/api.companies.search.tsx @@ -13,9 +13,10 @@ export async function loader({ request }: LoaderFunctionArgs) { const search = url.searchParams.get('search') || ''; const { companies } = await listCompanies({ + includeCompaniesWithoutEmployeesOrOpportunities: true, orderBy: 'most_employees', pagination: { - limit: 100, + limit: 50, page: 1, }, select: ['companies.id', 'companies.name'], diff --git a/packages/core/src/modules/employment/queries/list-companies.ts b/packages/core/src/modules/employment/queries/list-companies.ts index aa5e0259b..d37f871dd 100644 --- a/packages/core/src/modules/employment/queries/list-companies.ts +++ b/packages/core/src/modules/employment/queries/list-companies.ts @@ -10,6 +10,7 @@ import { import { type PaginationSearchParams } from '@/shared/types'; type ListCompaniesOptions = { + includeCompaniesWithoutEmployeesOrOpportunities?: boolean; orderBy: ListCompaniesOrderBy; pagination: PaginationSearchParams; select: Selection[]; @@ -18,7 +19,13 @@ type ListCompaniesOptions = { export async function listCompanies< Selection extends SelectExpression, ->({ orderBy, pagination, select, where }: ListCompaniesOptions) { +>({ + includeCompaniesWithoutEmployeesOrOpportunities = false, + orderBy, + pagination, + select, + where, +}: ListCompaniesOptions) { const query = db .selectFrom('companies') .leftJoin('opportunities', (join) => { @@ -33,13 +40,15 @@ export async function listCompanies< 'workExperiences.id' ) .where('workExperiences.deletedAt', 'is', null) - .where((eb) => { - // We only want to return companies that have at least one employee (past - // or present) or opportunity. - return eb.or([ - eb('opportunities.companyId', 'is not', null), - eb('workExperiences.companyId', 'is not', null), - ]); + .$if(!includeCompaniesWithoutEmployeesOrOpportunities, (qb) => { + // We only want to return companies that have at least one employee + // (past or present) or opportunity. + return qb.where((eb) => { + return eb.or([ + eb('opportunities.companyId', 'is not', null), + eb('workExperiences.companyId', 'is not', null), + ]); + }); }) .$if(!!where.search, (qb) => { const { search } = where;