From 2258efaa036f240906169f46b8d8cab2a2f34f01 Mon Sep 17 00:00:00 2001 From: Lola Date: Fri, 1 Aug 2025 15:09:24 -0500 Subject: [PATCH] Add "universal" arg to autocomplete query, include issue url in project search --- src/resolvers/Autocomplete.ts | 21 ++++++++++++++------- src/types/AutocompleteResult.ts | 3 +++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/resolvers/Autocomplete.ts b/src/resolvers/Autocomplete.ts index f4daa1f..e76a22d 100644 --- a/src/resolvers/Autocomplete.ts +++ b/src/resolvers/Autocomplete.ts @@ -21,6 +21,7 @@ export class AutocompleteResolver { @Arg('types', () => AutocompleteFilterTypeInput) types: AutocompleteFilterTypeInput, @Arg('status', () => [StudentStatus], { defaultValue: [StudentStatus.ACCEPTED] }) status: StudentStatus[], @Arg('q', () => String) q: string, + @Arg('universal', () => Boolean, { nullable: true, defaultValue: false}) universal?: boolean, ): Promise { const lookups: (() => Promise)[] = []; @@ -28,7 +29,7 @@ export class AutocompleteResolver { lookups.push(async () => (await this.prisma.student.findMany({ where: { - eventId: auth.eventId, + eventId: (universal === true) ? undefined : auth.eventId, AND: [ { OR: status.map(s => ({ @@ -48,6 +49,7 @@ export class AutocompleteResolver { .map(s => ({ name: `${s.givenName} ${s.surname} (${s.email})`, id: s.id, + eventId: s.eventId, type: AutocompleteType.STUDENT, }) as AutocompleteResult) ); @@ -57,7 +59,7 @@ export class AutocompleteResolver { lookups.push(async () => (await this.prisma.mentor.findMany({ where: { - eventId: auth.eventId, + eventId: (universal === true) ? undefined : auth.eventId, status: 'ACCEPTED', OR: [ { givenName: { contains: q, mode: 'insensitive'} }, @@ -69,6 +71,7 @@ export class AutocompleteResolver { .map(m => ({ name: `${m.givenName} ${m.surname} (${m.email})`, id: m.id, + eventId: m.eventId, type: AutocompleteType.MENTOR, }) as AutocompleteResult) ); @@ -78,14 +81,18 @@ export class AutocompleteResolver { lookups.push(async () => (await this.prisma.project.findMany({ where: { - eventId: auth.eventId, + eventId: (universal === true) ? undefined : auth.eventId, status: { in: ['ACCEPTED', 'MATCHED' ]}, - description: { contains: q, mode: 'insensitive'} + OR: [ + { description: { contains: q, mode: 'insensitive'} }, + { issueUrl: { contains: q, mode: 'insensitive' } }, + ] }, })) - .map(m => ({ - name: `${m.description?.slice(0,40)}...`, - id: m.id, + .map(p => ({ + name: `${p.description?.slice(0,40)}...`, + id: p.id, + eventId: p.eventId, type: AutocompleteType.PROJECT, }) as AutocompleteResult) ); diff --git a/src/types/AutocompleteResult.ts b/src/types/AutocompleteResult.ts index c03099f..2fbac48 100644 --- a/src/types/AutocompleteResult.ts +++ b/src/types/AutocompleteResult.ts @@ -18,4 +18,7 @@ export class AutocompleteResult { @Field(() => String) id: String; + + @Field(() => String) + eventId: String; } \ No newline at end of file