diff options
Diffstat (limited to 'lib/vendor-data/services.ts')
| -rw-r--r-- | lib/vendor-data/services.ts | 35 |
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 |
