summaryrefslogtreecommitdiff
path: root/lib/rfq-last/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rfq-last/service.ts')
-rw-r--r--lib/rfq-last/service.ts37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/rfq-last/service.ts b/lib/rfq-last/service.ts
index 7ebec795..68cfdac7 100644
--- a/lib/rfq-last/service.ts
+++ b/lib/rfq-last/service.ts
@@ -27,6 +27,37 @@ export async function getDefaultDueDate(): Promise<Date> {
return defaultDueDate;
}
+export type Project = {
+ id: number;
+ projectCode: string;
+ projectName: string;
+ type: string;
+}
+
+export async function getProjects(): Promise<Project[]> {
+ try {
+ // 트랜잭션을 사용하여 프로젝트 데이터 조회
+ const projectList = await db.transaction(async (tx) => {
+ // 모든 프로젝트 조회
+ const results = await tx
+ .select({
+ id: projects.id,
+ projectCode: projects.code, // 테이블의 실제 컬럼명에 맞게 조정
+ projectName: projects.name, // 테이블의 실제 컬럼명에 맞게 조정
+ type: projects.type, // 테이블의 실제 컬럼명에 맞게 조정
+ })
+ .from(projects)
+ .orderBy(projects.code);
+
+ return results;
+ });
+
+ return projectList;
+ } catch (error) {
+ console.error("프로젝트 목록 가져오기 실패:", error);
+ return []; // 오류 발생 시 빈 배열 반환
+ }
+}
export async function getRfqs(input: GetRfqsSchema) {
unstable_noStore();
@@ -47,6 +78,11 @@ export async function getRfqs(input: GetRfqsSchema) {
typeFilter =
like(rfqsLastView.rfqCode,'F%');
break;
+ case "pre_bidding":
+ // 사전견적(입찰): rfqCode가 B로 시작하는 경우
+ typeFilter =
+ like(rfqsLastView.rfqCode,'B%');
+ break;
case "itb":
// ITB: projectCompany가 있는 경우
typeFilter =
@@ -106,6 +142,7 @@ export async function getRfqs(input: GetRfqsSchema) {
ilike(rfqsLastView.projectName, s),
ilike(rfqsLastView.rfqTitle, s),
ilike(rfqsLastView.prNumber, s),
+ ilike(rfqsLastView.biddingNumber, s),
].filter(Boolean);
if (searchConditions.length > 0) {