summaryrefslogtreecommitdiff
path: root/lib/vendors/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendors/service.ts')
-rw-r--r--lib/vendors/service.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/vendors/service.ts b/lib/vendors/service.ts
index f4ba815c..e6a2a139 100644
--- a/lib/vendors/service.ts
+++ b/lib/vendors/service.ts
@@ -34,6 +34,8 @@ import {
countVendorMaterials,
selectVendorMaterials,
insertVendorMaterial,
+ getVendorContactById,
+ updateVendorContactById,
} from "./repository";
@@ -42,6 +44,7 @@ import type {
GetVendorsSchema,
GetVendorContactsSchema,
CreateVendorContactSchema,
+ UpdateVendorContactSchema,
GetVendorItemsSchema,
CreateVendorItemSchema,
GetRfqHistorySchema,
@@ -635,6 +638,8 @@ export async function createVendorContact(input: CreateVendorContactSchema) {
vendorId: input.vendorId,
contactName: input.contactName,
contactPosition: input.contactPosition || "",
+ contactDepartment: input.contactDepartment || "",
+ contactTask: input.contactTask || "",
contactEmail: input.contactEmail,
contactPhone: input.contactPhone || "",
isPrimary: input.isPrimary || false,
@@ -651,6 +656,35 @@ export async function createVendorContact(input: CreateVendorContactSchema) {
}
}
+export async function updateVendorContact(id: number, input: UpdateVendorContactSchema) {
+ unstable_noStore(); // Next.js 서버 액션 캐싱 방지
+ try {
+ const vendorContact = await getVendorContactById(id);
+ if (!vendorContact) {
+ return { data: null, error: "Contact not found" };
+ }
+
+ await db.transaction(async (tx) => {
+ // DB Update
+ await updateVendorContactById(tx, id, {
+ contactName: input.contactName,
+ contactPosition: input.contactPosition,
+ contactDepartment: input.contactDepartment,
+ contactTask: input.contactTask,
+ contactEmail: input.contactEmail,
+ contactPhone: input.contactPhone,
+ isPrimary: input.isPrimary,
+ });
+ });
+
+ // 캐시 무효화 (협력업체 연락처 목록 등)
+ revalidateTag(`vendor-contacts-${vendorContact.vendorId}`);
+
+ return { data: null, error: null };
+ } catch (err) {
+ return { data: null, error: getErrorMessage(err) };
+ }
+}
///item