From 9f6e0df135422677f2771affb65821cd000bb5c3 Mon Sep 17 00:00:00 2001 From: fro1991 Date: Fri, 30 May 2025 20:12:07 +0700 Subject: [PATCH] Fixing order by di user list --- src/controllers/user.ts | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/controllers/user.ts b/src/controllers/user.ts index cbbd59b..0635534 100644 --- a/src/controllers/user.ts +++ b/src/controllers/user.ts @@ -84,20 +84,39 @@ export class UserController { .where(whereAttr, whereVal); const subquery = userRepository - .createQueryBuilder() - .select("User.id") + .createQueryBuilder("User") + .select("User.id", "id") .where(whereAttr, whereVal) - .orderBy(param.order_field, param.order_direction) + .orderBy("User." + param.order_field, param.order_direction) .offset(offset) .limit(param.limit); - console.log('subquery :', subquery.getQuery()); const res_list = userRepository - .createQueryBuilder() - .where(`User.id IN (${subquery.getQuery()})`) + .createQueryBuilder("User") + .innerJoin( + "(" + subquery.getQuery() + ")", + "sub", + "User.id = sub.id" + ) .setParameters(subquery.getParameters()) .leftJoinAndSelect("User.roles", "roles") - .leftJoinAndSelect("roles.application", "application"); + .leftJoinAndSelect("roles.application", "application") + .orderBy("User." + param.order_field, param.order_direction); + + // const subquery = userRepository + // .createQueryBuilder() + // .select("User.id") + // .where(whereAttr, whereVal) + // .orderBy("User." + param.order_field, param.order_direction) + // .offset(offset) + // .limit(param.limit); + + // const res_list = userRepository + // .createQueryBuilder() + // .where(`User.id IN (${subquery.getQuery()})`) + // .setParameters(subquery.getParameters()) + // .leftJoinAndSelect("User.roles", "roles") + // .leftJoinAndSelect("roles.application", "application"); // const res_list = userRepository.createQueryBuilder() // .where(whereAttr, whereVal) @@ -107,6 +126,8 @@ export class UserController { // .offset(offset) // .limit(param.limit); + + if (param.with_deleted) { res_count.withDeleted(); res_list.withDeleted();