diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/rfqs/service.ts | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/rfqs/service.ts b/lib/rfqs/service.ts index a182af49..6b8b4738 100644 --- a/lib/rfqs/service.ts +++ b/lib/rfqs/service.ts @@ -625,20 +625,14 @@ export async function getMatchedVendors(input: GetMatchedVendorsSchema, rfqId: n ) } - // console.log("itemRows: ", itemRows) - // console.log("vendorIdList: ",vendorIdList) - // console.log("globalWhere: ",globalWhere) - // console.log("vendorRfqView.vendorId: ",vendorRfqView.vendorId) - // console.log("condition1: ",inArray(vendorRfqView.vendorId, vendorIdList)) - // console.log("condition2: ",eq(vendorRfqView.rfqId, rfqId)) - // console.log("finalWhere: ",finalWhere) - // (다) 최종 where // vendorId가 vendorIdList 내에 있어야 하고, // 특정 rfqId(뷰에 담긴 값)도 일치해야 함. const finalWhere = and( inArray(vendorRfqView.vendorId, vendorIdList), - // eq(vendorRfqView.rfqId, rfqId), + // 아래 라인은 rfq에 초대된 벤더만 필터링하는 조건으로 추정되지만 + // rfq 를 진행하기 전에도 벤더를 보여줘야 하므로 주석처리하겠습니다 + // eq(vendorRfqView.rfqId, rfqId), advancedWhere, globalWhere ) @@ -677,13 +671,18 @@ export async function getMatchedVendors(input: GetMatchedVendorsSchema, rfqId: n .offset(offset) .limit(limit) - // 총 개수 + // 중복 제거된 데이터 생성 + const distinctData = Array.from( + new Map(data.map(row => [row.id, row])).values() + ) + + // 중복 제거된 총 개수 계산 const [{ count }] = await tx - .select({ count: sql<number>`count(*)`.as("count") }) + .select({ count: sql<number>`count(DISTINCT ${vendorRfqView.vendorId})`.as("count") }) .from(vendorRfqView) .where(finalWhere) - return [data, Number(count)] + return [distinctData, Number(count)] }) |
