summaryrefslogtreecommitdiff
path: root/lib/vendor-data/services.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-data/services.ts')
-rw-r--r--lib/vendor-data/services.ts35
1 files changed, 18 insertions, 17 deletions
diff --git a/lib/vendor-data/services.ts b/lib/vendor-data/services.ts
index 7f0c47c1..0ec935b9 100644
--- a/lib/vendor-data/services.ts
+++ b/lib/vendor-data/services.ts
@@ -3,25 +3,22 @@
import db from "@/db/db"
import { items } from "@/db/schema/items"
import { projects } from "@/db/schema/projects"
-import { Tag, tags } from "@/db/schema/vendorData"
+import { Tag, tags } from "@/db/schema/vendorData"
import { eq } from "drizzle-orm"
import { revalidateTag, unstable_noStore } from "next/cache";
import { unstable_cache } from "@/lib/unstable-cache";
import { contractItems, contracts } from "@/db/schema/contract";
-// 스키마 import
-
export interface ProjectWithContracts {
projectId: number
projectCode: string
projectName: string
projectType: string
-
+
contracts: {
contractId: number
contractNo: string
contractName: string
- // contractName 등 필요한 필드 추가
packages: {
itemId: number
itemName: string
@@ -29,7 +26,6 @@ export interface ProjectWithContracts {
}[]
}
-
export async function getVendorProjectsAndContracts(
vendorId: number
): Promise<ProjectWithContracts[]> {
@@ -39,11 +35,11 @@ export async function getVendorProjectsAndContracts(
projectCode: projects.code,
projectName: projects.name,
projectType: projects.type,
-
+
contractId: contracts.id,
contractNo: contracts.contractNo,
contractName: contracts.contractName,
-
+
itemId: contractItems.id,
itemName: items.itemName,
})
@@ -85,15 +81,20 @@ export async function getVendorProjectsAndContracts(
projectEntry.contracts.push(contractEntry)
}
- // 3) 계약의 packages 배열에 아이템 추가
- contractEntry.packages.push({
- itemId: row.itemId,
- itemName: row.itemName,
- })
+ // 3) 계약의 packages 배열에 아이템 추가 (중복 체크)
+ // itemName이 같은 항목이 이미 존재하는지 확인
+ const existingItem = contractEntry.packages.find(
+ (pkg) => pkg.itemName === row.itemName
+ )
+
+ // 같은 itemName이 없는 경우에만 추가
+ if (!existingItem) {
+ contractEntry.packages.push({
+ itemId: row.itemId,
+ itemName: row.itemName,
+ })
+ }
}
return Array.from(projectMap.values())
-}
-
-
-// 1) 태그 조회
+} \ No newline at end of file