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