summaryrefslogtreecommitdiff
path: root/db/schema/rfqLastTBE.ts
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-12-01 16:14:04 +0900
committerjoonhoekim <26rote@gmail.com>2025-12-01 16:14:04 +0900
commit4953e770929b82ef77da074f77071ebd0f428529 (patch)
tree01de1f1a27c33609200679aec2fa8a9e948d0a78 /db/schema/rfqLastTBE.ts
parent41bb0f9f67a85ac8e17d766492f79a2997d3c6e9 (diff)
parent7d2af2af79acd2f674920e8ceeae39fb4a4903e6 (diff)
Merge branch 'dynamic-data-table' into dujinkim
Diffstat (limited to 'db/schema/rfqLastTBE.ts')
-rw-r--r--db/schema/rfqLastTBE.ts63
1 files changed, 31 insertions, 32 deletions
diff --git a/db/schema/rfqLastTBE.ts b/db/schema/rfqLastTBE.ts
index e690ce4b..20cefba3 100644
--- a/db/schema/rfqLastTBE.ts
+++ b/db/schema/rfqLastTBE.ts
@@ -1,6 +1,6 @@
import { pgTable, pgView, serial, varchar, text, timestamp, boolean, integer, numeric, date, alias, jsonb, uniqueIndex, index } from "drizzle-orm/pg-core";
import { eq, sql, relations } from "drizzle-orm";
-import { rfqsLast, rfqLastDetails, rfqLastAttachments, rfqLastAttachmentRevisions } from "./rfqLast";
+import { rfqsLast, rfqLastDetails, rfqLastAttachments, rfqLastAttachmentRevisions, rfqPrItems } from "./rfqLast";
import { users } from "./users";
import { vendors } from "./vendors";
import { rfqLastVendorAttachments } from "./rfqVendor";
@@ -393,23 +393,23 @@ export const tbeSessionSummaryView = pgView("tbe_session_summary_view").as((qb)
// 문서 검토 통계
totalDocuments: sql<number>`(
SELECT COUNT(*)
- FROM rfq_last_tbe_document_reviews
- WHERE tbe_session_id = ${tbeSession.id}
+ FROM ${rfqLastTbeDocumentReviews}
+ WHERE ${rfqLastTbeDocumentReviews.tbeSessionId} = ${tbeSession.id}
)`.as("total_documents"),
reviewedDocuments: sql<number>`(
SELECT COUNT(*)
- FROM rfq_last_tbe_document_reviews
- WHERE tbe_session_id = ${tbeSession.id}
- AND review_status IN ('검토완료', '승인')
+ FROM ${rfqLastTbeDocumentReviews}
+ WHERE ${rfqLastTbeDocumentReviews.tbeSessionId} = ${tbeSession.id}
+ AND ${rfqLastTbeDocumentReviews.reviewStatus} IN ('검토완료', '승인')
)`.as("reviewed_documents"),
// PDFTron 코멘트 통계
totalComments: sql<number>`(
- SELECT COUNT(*)
- FROM rfq_last_tbe_pdftron_comments pc
- JOIN rfq_last_tbe_document_reviews dr ON pc.document_review_id = dr.id
- WHERE dr.tbe_session_id = ${tbeSession.id}
+ SELECT COALESCE(SUM((${rfqLastTbePdftronComments.commentSummary}->>'total')::int), 0)
+ FROM ${rfqLastTbePdftronComments}
+ JOIN ${rfqLastTbeDocumentReviews} ON ${rfqLastTbePdftronComments.documentReviewId} = ${rfqLastTbeDocumentReviews.id}
+ WHERE ${rfqLastTbeDocumentReviews.tbeSessionId} = ${tbeSession.id}
)`.as("total_comments"),
@@ -537,54 +537,53 @@ export const tbeLastView = pgView("tbe_last_view").as((qb) => {
// PR 아이템 수
prItemsCount: sql<number>`(
SELECT COUNT(*)
- FROM rfq_pr_items
- WHERE rfqs_last_id = ${rfqsLast.id}
+ FROM ${rfqPrItems}
+ WHERE ${rfqPrItems.rfqsLastId} = ${rfqsLast.id}
)`.as("pr_items_count"),
majorItemsCount: sql<number>`(
SELECT COUNT(*)
- FROM rfq_pr_items
- WHERE rfqs_last_id = ${rfqsLast.id}
- AND major_yn = true
+ FROM ${rfqPrItems}
+ WHERE ${rfqPrItems.rfqsLastId} = ${rfqsLast.id}
+ AND ${rfqPrItems.majorYn} = true
)`.as("major_items_count"),
// 구매자 문서 수 (설계 문서)
buyerDocumentsCount: sql<number>`(
SELECT COUNT(*)
- FROM rfq_last_tbe_document_reviews
- WHERE tbe_session_id = ${rfqLastTbeSessions.id}
- AND document_source = 'buyer'
+ FROM ${rfqLastTbeDocumentReviews}
+ WHERE ${rfqLastTbeDocumentReviews.tbeSessionId} = ${rfqLastTbeSessions.id}
+ AND ${rfqLastTbeDocumentReviews.documentSource} = 'buyer'
)`.as("buyer_documents_count"),
// 벤더 문서 수
vendorDocumentsCount: sql<number>`(
SELECT COUNT(*)
- FROM rfq_last_tbe_vendor_documents
- WHERE tbe_session_id = ${rfqLastTbeSessions.id}
+ FROM ${rfqLastTbeVendorDocuments}
+ WHERE ${rfqLastTbeVendorDocuments.tbeSessionId} = ${rfqLastTbeSessions.id}
)`.as("vendor_documents_count"),
// 검토 완료 문서 수
reviewedDocumentsCount: sql<number>`(
SELECT COUNT(*)
- FROM rfq_last_tbe_document_reviews
- WHERE tbe_session_id = ${rfqLastTbeSessions.id}
- AND review_status IN ('검토완료', '승인')
+ FROM ${rfqLastTbeDocumentReviews}
+ WHERE ${rfqLastTbeDocumentReviews.tbeSessionId} = ${rfqLastTbeSessions.id}
+ AND ${rfqLastTbeDocumentReviews.reviewStatus} IN ('검토완료', '승인')
)`.as("reviewed_documents_count"),
// PDFTron 코멘트 수
totalCommentsCount: sql<number>`(
- SELECT COUNT(*)
- FROM rfq_last_tbe_pdftron_comments pc
- JOIN rfq_last_tbe_document_reviews dr ON pc.document_review_id = dr.id
- WHERE dr.tbe_session_id = ${rfqLastTbeSessions.id}
+ SELECT COALESCE(SUM((${rfqLastTbePdftronComments.commentSummary}->>'total')::int), 0)
+ FROM ${rfqLastTbePdftronComments}
+ JOIN ${rfqLastTbeDocumentReviews} ON ${rfqLastTbePdftronComments.documentReviewId} = ${rfqLastTbeDocumentReviews.id}
+ WHERE ${rfqLastTbeDocumentReviews.tbeSessionId} = ${rfqLastTbeSessions.id}
)`.as("total_comments_count"),
unresolvedCommentsCount: sql<number>`(
- SELECT COUNT(*)
- FROM rfq_last_tbe_pdftron_comments pc
- JOIN rfq_last_tbe_document_reviews dr ON pc.document_review_id = dr.id
- WHERE dr.tbe_session_id = ${rfqLastTbeSessions.id}
- AND pc.status = 'open'
+ SELECT COALESCE(SUM((${rfqLastTbePdftronComments.commentSummary}->>'open')::int), 0)
+ FROM ${rfqLastTbePdftronComments}
+ JOIN ${rfqLastTbeDocumentReviews} ON ${rfqLastTbePdftronComments.documentReviewId} = ${rfqLastTbeDocumentReviews.id}
+ WHERE ${rfqLastTbeDocumentReviews.tbeSessionId} = ${rfqLastTbeSessions.id}
)`.as("unresolved_comments_count"),
// 타임스탬프