summaryrefslogtreecommitdiff
path: root/lib/evaluation-criteria/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/evaluation-criteria/service.ts')
-rw-r--r--lib/evaluation-criteria/service.ts72
1 files changed, 51 insertions, 21 deletions
diff --git a/lib/evaluation-criteria/service.ts b/lib/evaluation-criteria/service.ts
index 8badc61f..e204579f 100644
--- a/lib/evaluation-criteria/service.ts
+++ b/lib/evaluation-criteria/service.ts
@@ -8,7 +8,7 @@ import {
asc,
desc,
ilike,
- or,
+ or,count, eq
} from 'drizzle-orm';
import {
countRegEvalCriteria,
@@ -27,7 +27,7 @@ import {
REG_EVAL_CRITERIA_CATEGORY2_ENUM,
REG_EVAL_CRITERIA_CATEGORY_ENUM,
REG_EVAL_CRITERIA_ITEM_ENUM,
- regEvalCriteriaView,
+ regEvalCriteria, regEvalCriteriaDetails, // regEvalCriteriaView 대신 regEvalCriteria 사용
type NewRegEvalCriteria,
type NewRegEvalCriteriaDetails,
type RegEvalCriteria,
@@ -42,24 +42,25 @@ import { type GetRegEvalCriteriaSchema } from './validations';
// ----------------------------------------------------------------------------------------------------
-/* FUNCTION FOR GETTING CRITERIA */
+/* FUNCTION FOR GETTING CRITERIA - 메인 기준 목록만 가져오기 */
async function getRegEvalCriteria(input: GetRegEvalCriteriaSchema) {
try {
const offset = (input.page - 1) * input.perPage;
const advancedWhere = filterColumns({
- table: regEvalCriteriaView,
+ table: regEvalCriteria, // view 대신 메인 테이블 사용
filters: input.filters,
joinOperator: input.joinOperator,
});
- // Filtering
+ // Filtering - 메인 테이블 컬럼들 기준으로 검색
let globalWhere;
if (input.search) {
const s = `%${input.search}%`;
globalWhere = or(
- ilike(regEvalCriteriaView.category, s),
- ilike(regEvalCriteriaView.item, s),
- ilike(regEvalCriteriaView.classification, s),
+ ilike(regEvalCriteria.category, s),
+ ilike(regEvalCriteria.item, s),
+ ilike(regEvalCriteria.classification, s),
+ ilike(regEvalCriteria.range, s), // range 검색 추가
);
}
const finalWhere = and(advancedWhere, globalWhere);
@@ -68,20 +69,27 @@ async function getRegEvalCriteria(input: GetRegEvalCriteriaSchema) {
const orderBy = input.sort.length > 0
? input.sort.map((item) => {
return item.desc
- ? desc(regEvalCriteriaView[item.id])
- : asc(regEvalCriteriaView[item.id]);
+ ? desc(regEvalCriteria[item.id])
+ : asc(regEvalCriteria[item.id]);
})
- : [asc(regEvalCriteriaView.id)];
+ : [asc(regEvalCriteria.id)];
- // Getting Data
+ // Getting Data - 메인 기준 데이터만 가져오기
const { data, total } = await db.transaction(async (tx) => {
- const data = await selectRegEvalCriteria(tx, {
- where: finalWhere,
- orderBy,
- offset,
- limit: input.perPage,
- });
- const total = await countRegEvalCriteria(tx, finalWhere);
+ const data = await tx
+ .select()
+ .from(regEvalCriteria)
+ .where(finalWhere)
+ .orderBy(...orderBy)
+ .offset(offset)
+ .limit(input.perPage);
+
+ const totalResult = await tx
+ .select({ count: count() })
+ .from(regEvalCriteria)
+ .where(finalWhere);
+
+ const total = totalResult[0]?.count || 0;
return { data, total };
});
@@ -105,6 +113,26 @@ async function getRegEvalCriteriaWithDetails(id: number) {
}
}
+/* FUNCTION FOR GETTING CRITERIA DETAILS ONLY - 특정 기준의 상세 항목들만 가져오기 */
+async function getRegEvalCriteriaDetails(criteriaId: number) {
+ try {
+
+ console.log(criteriaId,"criteriaId")
+ return await db.transaction(async (tx) => {
+ const details = await tx
+ .select()
+ .from(regEvalCriteriaDetails)
+ .where(eq(regEvalCriteriaDetails.criteriaId, criteriaId))
+ .orderBy(asc(regEvalCriteriaDetails.orderIndex));
+
+ return details;
+ });
+ } catch (err) {
+ console.error('Error in Getting Regular Evaluation Criteria Details: ', err);
+ return [];
+ }
+}
+
// ----------------------------------------------------------------------------------------------------
/* FUNCTION FOR CREATING CRITERIA WITH DETAILS */
@@ -145,6 +173,9 @@ async function modifyRegEvalCriteriaWithDetails(
) {
try {
return await db.transaction(async (tx) => {
+
+ console.log(id, criteriaData)
+
const modifiedCriteria = await updateRegEvalCriteria(tx, id, criteriaData);
const originCriteria = await getRegEvalCriteriaWithDetails(id);
const originCriteriaDetails = originCriteria?.criteriaDetails || [];
@@ -214,8 +245,6 @@ async function removeRegEvalCriteriaDetails(id: number) {
}
}
-
-
// ----------------------------------------------------------------------------------------------------
/* EXPORT */
@@ -224,6 +253,7 @@ export {
modifyRegEvalCriteriaWithDetails,
getRegEvalCriteria,
getRegEvalCriteriaWithDetails,
+ getRegEvalCriteriaDetails, // 새로 추가
removeRegEvalCriteria,
removeRegEvalCriteriaDetails,
}; \ No newline at end of file