fix(index) perbaikan sorting index

pull/3/head
Aswin Ashar Abdullah 2024-06-20 17:17:11 +07:00
parent 9445d561ac
commit bc0d8cbb10
1 changed files with 17 additions and 7 deletions

View File

@ -23,12 +23,12 @@ export function setQueryFilterDefault(
// jika searching status terdapat dalam enum, maka dia mencari specific data // jika searching status terdapat dalam enum, maka dia mencari specific data
// ? karena jika tidak, ketika dia search "active" maka "inactive" juga ikut // ? karena jika tidak, ketika dia search "active" maka "inactive" juga ikut
if (STATUS[statusData.toUpperCase()]) if (STATUS[statusData.toUpperCase()])
qb.orWhere(`${tableName}.status = :statusData`, { qb.orWhere(`${ tableName }.status = :statusData`, {
statusData: statusData, statusData: statusData,
}); });
else else
qb['orWhere']( qb['orWhere'](
`${tableName}.status::text ILIKE '%${[statusData]}%'`, `${ tableName }.status::text ILIKE '%${ [statusData] }%'`,
); );
}); });
}), }),
@ -85,15 +85,25 @@ export function getOrderBy(
queryBuilder: SelectQueryBuilder<any>, queryBuilder: SelectQueryBuilder<any>,
tableName: TABLE_NAME, tableName: TABLE_NAME,
) { ) {
let orderBy: string = `${tableName}.created_at`; let orderBys: string[] = [`${ tableName }.created_at`];
const orderType = baseFilter.order_type ?? ORDER_TYPE.DESC; const orderType = baseFilter.order_type ?? ORDER_TYPE.DESC;
if (!!baseFilter.order_by) { if (!!baseFilter.order_by) {
orderBy = orderBys =
baseFilter.order_by.split('.').length > 1 baseFilter.order_by.split('.').length > 1
? `${baseFilter.order_by}` ? [`${ baseFilter.order_by }`]
: `${tableName}.${baseFilter.order_by}`; : [`${ tableName }.${ baseFilter.order_by }`];
if (baseFilter.order_by.split('.').length == 1 && baseFilter.order_by.split('.').pop() != 'id') {
orderBys.push(`${ tableName }.created_at`)
}
} }
queryBuilder.orderBy(orderBy, orderType); for (let i = 0; i < orderBys.length; i++) {
if (i == 0) {
queryBuilder.orderBy(orderBys[i], orderType);
} else {
queryBuilder.addOrderBy(orderBys[i], orderType);
}
}
} }