try to fix api

This commit is contained in:
ItsMalma
2025-12-18 07:55:30 +07:00
parent d13d9fa158
commit 1762a3e5e4

View File

@@ -42,7 +42,7 @@ import type {
PackageDetailResponse, PackageDetailResponse,
PackageResponse, PackageResponse,
} from "@/modules/package/package.types"; } from "@/modules/package/package.types";
import { wrap, type OrderDefinition } from "@mikro-orm/core"; import { wrap } from "@mikro-orm/core";
import { Router, type Request, type Response } from "express"; import { Router, type Request, type Response } from "express";
import slugify from "slugify"; import slugify from "slugify";
import { ulid } from "ulid"; import { ulid } from "ulid";
@@ -152,20 +152,9 @@ export class PackageController extends Controller {
const count = await orm.em.count(Package); const count = await orm.em.count(Package);
const orderBy: OrderDefinition<Package> = {};
switch (query.sort_by) {
case "newest":
orderBy.createdAt = "DESC";
break;
case "oldest":
orderBy.createdAt = "ASC";
break;
}
let packageQueryBuilder = orm.em let packageQueryBuilder = orm.em
.createQueryBuilder(Package, "_package") .createQueryBuilder(Package, "_package")
.select(["*"], true) .select(["*"])
.distinctOn(["class"])
.limit(query.per_page) .limit(query.per_page)
.offset((query.page - 1) * query.per_page) .offset((query.page - 1) * query.per_page)
.leftJoinAndSelect("_package.partner", "_partner"); .leftJoinAndSelect("_package.partner", "_partner");
@@ -174,18 +163,20 @@ export class PackageController extends Controller {
packageQueryBuilder = packageQueryBuilder.where({ class: query.class }); packageQueryBuilder = packageQueryBuilder.where({ class: query.class });
} }
if ("by_ideal" in query && query.by_ideal) { if ("by_ideal" in query && query.by_ideal) {
packageQueryBuilder = packageQueryBuilder.where({ class: "by_ideal" }); packageQueryBuilder = packageQueryBuilder.distinctOn(["class"]).orderBy({
class: "ASC",
});
} }
switch (query.sort_by) { switch (query.sort_by) {
case "newest": case "newest":
packageQueryBuilder = packageQueryBuilder.orderBy({ packageQueryBuilder = packageQueryBuilder.orderBy({
"_package.created_at": "DESC", createdAt: "DESC",
}); });
break; break;
case "oldest": case "oldest":
packageQueryBuilder = packageQueryBuilder.orderBy({ packageQueryBuilder = packageQueryBuilder.orderBy({
"_package.created_at": "ASC", createdAt: "ASC",
}); });
break; break;
} }