fix(SPG-503) BE - Search by Status - Dapat melakukan pencarian dgn sebagian huruf, tanpa mengeluarkan ERR row

pull/2/head
ashar 2024-06-10 15:59:10 +07:00
parent f35aa7412f
commit a8322e13e5
1 changed files with 22 additions and 10 deletions

View File

@ -1,9 +1,9 @@
import { SelectQueryBuilder } from 'typeorm';
import { Brackets, SelectQueryBuilder } from 'typeorm';
import { WhereInQueryHelper } from './or-where-in-query.helpe';
import { BaseFilterEntity } from 'src/core/modules/domain/entities/base-filter.entity';
import { BetweenQueryHelper } from './between-query.helper';
import { TABLE_NAME } from 'src/core/strings/constants/table.constants';
import { ORDER_TYPE } from 'src/core/strings/constants/base.constants';
import { ORDER_TYPE, STATUS } from 'src/core/strings/constants/base.constants';
export function setQueryFilterDefault(
queryBuilder: SelectQueryBuilder<any>,
@ -11,14 +11,26 @@ export function setQueryFilterDefault(
tableName: TABLE_NAME,
): SelectQueryBuilder<any> {
// filter berdasarkan statuses
if (!!baseFilter.statuses)
new WhereInQueryHelper(
queryBuilder,
tableName,
'status',
baseFilter.statuses,
'statuses',
).getQuery();
if (!!baseFilter.statuses) {
queryBuilder.andWhere(
new Brackets((qb) => {
baseFilter.statuses.map((status) => {
const statusData = status.includes("'")
? status.trim().replace(/'/g, "''").replace(/\s+/g, ' ')
: status.trim().replace(/\s+/g, ' ');
if (STATUS[statusData.toUpperCase()])
qb.orWhere(`${tableName}.status = :statusData`, {
statusData: statusData,
});
else
qb['orWhere'](
`${tableName}.status::text ILIKE '%${[statusData]}%'`,
);
});
}),
);
}
// filter berdasarkan id pembuat
if (!!baseFilter.created_ids)