import db from "@/db/db"; import { projects } from "@/db/schema"; import { Item, items } from "@/db/schema/items"; import { tagTypeClassFormMappings } from "@/db/schema/vendorData"; import { eq, inArray, not, asc, desc, and, ilike, gte, lte, count, gt, } from "drizzle-orm"; import { PgTransaction } from "drizzle-orm/pg-core"; export async function selectFormLists( tx: PgTransaction, params: { where?: any; orderBy?: (ReturnType | ReturnType)[]; offset?: number; limit?: number; } ) { const { where, orderBy, offset = 0, limit = 10 } = params; return tx .select({ id: tagTypeClassFormMappings.id, projectId: tagTypeClassFormMappings.projectId, tagTypeLabel: tagTypeClassFormMappings.tagTypeLabel, classLabel: tagTypeClassFormMappings.classLabel, formCode: tagTypeClassFormMappings.formCode, formName: tagTypeClassFormMappings.formName, ep: tagTypeClassFormMappings.ep, remark: tagTypeClassFormMappings.remark, createdAt: tagTypeClassFormMappings.createdAt, updatedAt: tagTypeClassFormMappings.updatedAt, // 프로젝트 정보 추가 projectCode: projects.code, projectName: projects.name }) .from(tagTypeClassFormMappings) .innerJoin(projects, eq(tagTypeClassFormMappings.projectId, projects.id)) .where(where) .orderBy(...(orderBy ?? [])) .offset(offset) .limit(limit); } /** 총 개수 count */ export async function countFormLists( tx: PgTransaction, where?: any ) { const res = await tx .select({ count: count() }) .from(tagTypeClassFormMappings) .leftJoin(projects, eq(tagTypeClassFormMappings.projectId, projects.id)) .where(where); return res[0]?.count ?? 0; }