summaryrefslogtreecommitdiff
path: root/lib/vendor-data
diff options
context:
space:
mode:
author0-Zz-ang <s1998319@gmail.com>2025-08-17 23:05:19 +0900
committer0-Zz-ang <s1998319@gmail.com>2025-08-17 23:05:19 +0900
commit5adc1df95f80fbec7a0b5bbee15448b10d5aec3a (patch)
treec748910aacb05f13e335f9afa39eb9d763f88d7c /lib/vendor-data
parent6013fe51293ea067400e6b3b26691705608eba22 (diff)
(박서영)evcp/document-list-only, evcp/vendor-data 생성
Diffstat (limited to 'lib/vendor-data')
-rw-r--r--lib/vendor-data/services.ts28
1 files changed, 20 insertions, 8 deletions
diff --git a/lib/vendor-data/services.ts b/lib/vendor-data/services.ts
index 0ec935b9..e8ecd01c 100644
--- a/lib/vendor-data/services.ts
+++ b/lib/vendor-data/services.ts
@@ -3,11 +3,10 @@
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 { 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 { getServerSession } from "next-auth";
+import { authOptions } from "@/app/api/auth/[...nextauth]/route";
export interface ProjectWithContracts {
projectId: number
@@ -20,16 +19,22 @@ export interface ProjectWithContracts {
contractNo: string
contractName: string
packages: {
- itemId: number
+ itemId: number // contract_items.id
itemName: string
}[]
}[]
}
export async function getVendorProjectsAndContracts(
- vendorId: number
+ vendorId?: number
): Promise<ProjectWithContracts[]> {
- const rows = await db
+ // 세션에서 도메인 정보 가져오기
+ const session = await getServerSession(authOptions)
+
+ // EVCP 도메인일 때만 전체 조회
+ const isEvcpDomain = session?.user?.domain === "evcp"
+
+ const query = db
.select({
projectId: projects.id,
projectCode: projects.code,
@@ -47,7 +52,12 @@ export async function getVendorProjectsAndContracts(
.innerJoin(projects, eq(contracts.projectId, projects.id))
.innerJoin(contractItems, eq(contractItems.contractId, contracts.id))
.innerJoin(items, eq(contractItems.itemId, items.id))
- .where(eq(contracts.vendorId, vendorId))
+
+ if (!isEvcpDomain && vendorId) {
+ query.where(eq(contracts.vendorId, vendorId))
+ }
+
+ const rows = await query
const projectMap = new Map<number, ProjectWithContracts>()
@@ -71,6 +81,7 @@ export async function getVendorProjectsAndContracts(
(c) => c.contractId === row.contractId
)
if (!contractEntry) {
+
// 새 계약 항목
contractEntry = {
contractId: row.contractId,
@@ -97,4 +108,5 @@ export async function getVendorProjectsAndContracts(
}
return Array.from(projectMap.values())
-} \ No newline at end of file
+}
+