From db7a4fff036d556659bad1bcd70aa712b1458ce5 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Thu, 5 Jun 2025 08:04:11 +0200 Subject: [PATCH] enhance: case-insensitive search with ILike --- src/helpers/dynamicQueryBuilder.ts | 8 ++++---- src/service/club/member/memberService.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/helpers/dynamicQueryBuilder.ts b/src/helpers/dynamicQueryBuilder.ts index dd5461d..25d7554 100644 --- a/src/helpers/dynamicQueryBuilder.ts +++ b/src/helpers/dynamicQueryBuilder.ts @@ -228,19 +228,19 @@ export default abstract class DynamicQueryBuilder { query += ` IS NOT NULL`; break; case "contains": - query += ` LIKE :${parameterKey}`; + query += ` ILIKE :${parameterKey}`; parameters[parameterKey] = `%${condition.value}%`; break; case "notContains": - query += ` NOT LIKE :${parameterKey}`; + query += ` NOT ILIKE :${parameterKey}`; parameters[parameterKey] = `%${condition.value}%`; break; case "startsWith": - query += ` LIKE :${parameterKey}`; + query += ` ILIKE :${parameterKey}`; parameters[parameterKey] = `${condition.value}%`; break; case "endsWith": - query += ` LIKE :${parameterKey}`; + query += ` ILIKE :${parameterKey}`; parameters[parameterKey] = `%${condition.value}`; break; case "timespanEq": diff --git a/src/service/club/member/memberService.ts b/src/service/club/member/memberService.ts index 5149114..bcac6c6 100644 --- a/src/service/club/member/memberService.ts +++ b/src/service/club/member/memberService.ts @@ -1,4 +1,4 @@ -import { Brackets, Like, Not, SelectQueryBuilder } from "typeorm"; +import { Brackets, ILike, Not, SelectQueryBuilder } from "typeorm"; import { dataSource } from "../../../data-source"; import { member } from "../../../entity/club/member/member"; import DatabaseActionException from "../../../exceptions/databaseActionException"; @@ -30,7 +30,7 @@ export default abstract class MemberService { if (searchBits.length < 2) { query = query.where( - `member.firstname LIKE :searchQuery OR member.lastname LIKE :searchQuery OR member.internalId LIKE :searchQuery`, + `member.firstname ILIKE :searchQuery OR member.lastname ILIKE :searchQuery OR member.internalId ILIKE :searchQuery`, { searchQuery: `%${searchBits[0]}%`, } @@ -42,12 +42,12 @@ export default abstract class MemberService { query = query .orWhere( new Brackets((qb) => - qb.where({ firstname: Like(`%${term[0]}%`) }).andWhere({ lastname: Like(`%${term[1]}%`) }) + qb.where({ firstname: ILike(`%${term[0]}%`) }).andWhere({ lastname: ILike(`%${term[1]}%`) }) ) ) .orWhere( new Brackets((qb) => - qb.where({ firstname: Like(`%${term[1]}%`) }).andWhere({ lastname: Like(`%${term[0]}%`) }) + qb.where({ firstname: ILike(`%${term[1]}%`) }).andWhere({ lastname: ILike(`%${term[0]}%`) }) ) ); });