Update : Fix Get method for search by status coloumn

This commit is contained in:
percyfikri 2024-10-08 11:44:08 +07:00
parent d1a9f9c1ff
commit b1de52dbb4

View File

@ -1,12 +1,10 @@
import { eq, sql, ilike, isNull, and, desc } from "drizzle-orm"; import { eq, sql, ilike, and, desc} from "drizzle-orm";
import { Hono } from "hono"; import { Hono } from "hono";
import { z } from "zod"; import { z } from "zod";
import db from "../../drizzle"; import db from "../../drizzle";
import { respondents } from "../../drizzle/schema/respondents"; import { respondents } from "../../drizzle/schema/respondents";
import { assessments } from "../../drizzle/schema/assessments"; import { assessments } from "../../drizzle/schema/assessments";
import { users } from "../../drizzle/schema/users"; import { users } from "../../drizzle/schema/users";
import { rolesToUsers } from "../../drizzle/schema/rolesToUsers";
import { rolesSchema } from "../../drizzle/schema/roles";
import HonoEnv from "../../types/HonoEnv"; import HonoEnv from "../../types/HonoEnv";
import authInfo from "../../middlewares/authInfo"; import authInfo from "../../middlewares/authInfo";
import { forbidden, notFound } from "../../errors/DashboardError"; import { forbidden, notFound } from "../../errors/DashboardError";
@ -52,7 +50,9 @@ const assessmentRequestRoute = new Hono<HonoEnv>()
.where( .where(
and( and(
eq(users.id, userId), eq(users.id, userId),
q ? ilike(assessments.status, `%${q}%`) : undefined q && q.trim() !== ""
? ilike(sql`${assessments.status}::text`, `%${q}%`) // Cast status to text for ilike
: undefined
) )
) )
@ -70,14 +70,14 @@ const assessmentRequestRoute = new Hono<HonoEnv>()
respondentId: respondents.id, respondentId: respondents.id,
}) })
.from(users) .from(users)
.leftJoin(rolesToUsers, eq(users.id, rolesToUsers.userId))
.leftJoin(rolesSchema, eq(rolesToUsers.roleId, rolesSchema.id))
.leftJoin(respondents, eq(users.id, respondents.userId)) .leftJoin(respondents, eq(users.id, respondents.userId))
.leftJoin(assessments, eq(respondents.id, assessments.respondentId)) .leftJoin(assessments, eq(respondents.id, assessments.respondentId))
.where( .where(
and( and(
eq(users.id, userId), eq(users.id, userId),
q ? ilike(assessments.status, `%${q}%`) : undefined q && q.trim() !== ""
? ilike(sql`${assessments.status}::text`, `%${q}%`) // Cast status to text for ilike
: undefined
) )
) )
.orderBy(desc(assessments.createdAt)) .orderBy(desc(assessments.createdAt))