Closed GabrielCamargoL closed 1 year ago
OBS: todos são opcionais. Caso não seja passado nenhum argumento, será tratado como sem filtro, vindo uma lista de todas as parcerias.
Controller
@Get('/search') @UseGuards(AuthGuard('jwt')) async findByFilters(@Query() filters: { name?: string; email?: string; status?: PartnerStatus; classification?: PartnerClassification; disabled?: boolean; }): Promise<Prisma.PartnerWhereInput[]> { return await this.partnerService.findByFilters(filters); }
Service
async findByFilters(filters: Partial<Partner>): Promise<Partner[]> { const filterMapping: { [key in keyof Partial<Partner>]?: (value: any) => Prisma.PartnerWhereInput } = { name: (value) => ({ name: { contains: value } }), email: (value) => ({ email: { contains: value } }), status: (value) => ({ status: { equals: value } }), classification: (value) => ({ classification: { equals: value } }), disabled: (value) => ({ disabled: { equals: value } }), }; const where: Prisma.PartnerWhereInput = {}; Object.entries(filters).forEach(([field, value]) => { const filterCondition = filterMapping[field as keyof Partial<Partner>]; if (filterCondition && value !== undefined) { Object.assign(where, filterCondition(value)); } }); return this.prismaService.partner.findMany({ where }); }
Filtros em Parcerias
Task
44
Rota: dominio.api/partners/search?=
Filtros inclusos:
OBS: todos são opcionais. Caso não seja passado nenhum argumento, será tratado como sem filtro, vindo uma lista de todas as parcerias.
Print dos resultados obtidos
Códigos
Controller
Service
Comentários Adicionais