This commit is contained in:
Narul Hidayah
2026-01-02 23:07:38 +07:00
parent 3d979c53c7
commit ce94b0b6e4
3 changed files with 117 additions and 18 deletions

View File

@ -70,19 +70,38 @@ export class SucoController {
const offset = (param.page - 1) * param.limit
const filterObj = param.filter ? JSON.parse(param.filter) : {};
// Remove foreign key from filter for CommonHelper.handleFilter
const filterWithoutFK = { ...filterObj };
delete filterWithoutFK.administrativu_id;
const filterStrWithoutFK = JSON.stringify(filterWithoutFK);
const { whereAttr, whereVal } = CommonHelper.handleFilter({
filter: param.filter,
filter: filterStrWithoutFK,
col_any_eq: ['code'],
col_any_like: ['name']
});
const res_count = repo.createQueryBuilder("Suco")
.where(whereAttr, whereVal);
.leftJoin("Suco.administrativu", "administrativu")
.where(whereAttr || "1=1", whereVal);
// Handle foreign key filter with relation
if (filterObj.administrativu_id) {
res_count.andWhere("administrativu.id = :administrativuId", { administrativuId: filterObj.administrativu_id });
}
const res_list = repo.createQueryBuilder("Suco")
.where(whereAttr, whereVal)
.leftJoin("Suco.administrativu", "administrativu")
.where(whereAttr || "1=1", whereVal)
.orderBy("Suco." + param.order_field, param.order_direction)
.offset(offset)
.limit(param.limit);
// Handle foreign key filter with relation
if (filterObj.administrativu_id) {
res_list.andWhere("administrativu.id = :administrativuId", { administrativuId: filterObj.administrativu_id });
}
if (param.with_deleted) {
res_count.withDeleted();
@ -143,8 +162,14 @@ export class SucoController {
const repo = OrmHelper.DB.getRepository(Suco);
const filterObj = param.filter ? JSON.parse(param.filter) : {};
// Remove foreign key from filter for CommonHelper.handleFilter
const filterWithoutFK = { ...filterObj };
delete filterWithoutFK.administrativu_id;
const filterStrWithoutFK = JSON.stringify(filterWithoutFK);
const { whereAttr, whereVal } = CommonHelper.handleFilter({
filter: param.filter,
filter: filterStrWithoutFK,
col_any_eq: ['code'],
col_any_like: ['name']
});
@ -169,8 +194,16 @@ export class SucoController {
const fetchAndWrite = async (page: any) => {
const offset = (page - 1) * limit
const data = await repo.createQueryBuilder("Suco")
.where(whereAttr, whereVal)
let query = repo.createQueryBuilder("Suco")
.leftJoin("Suco.administrativu", "administrativu")
.where(whereAttr || "1=1", whereVal);
// Handle foreign key filter with relation
if (filterObj.administrativu_id) {
query = query.andWhere("administrativu.id = :administrativuId", { administrativuId: filterObj.administrativu_id });
}
const data = await query
.select([
'Suco.id',
'Suco.code',