백엔드 구현
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import prisma from "../config/database";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { EventTriggerService } from "./eventTriggerService";
|
||||
|
||||
export interface FormDataResult {
|
||||
id: number;
|
||||
@@ -247,6 +248,22 @@ export class DynamicFormService {
|
||||
// 결과를 표준 형식으로 변환
|
||||
const insertedRecord = Array.isArray(result) ? result[0] : result;
|
||||
|
||||
// 🔥 조건부 연결 실행 (INSERT 트리거)
|
||||
try {
|
||||
if (company_code) {
|
||||
await EventTriggerService.executeEventTriggers(
|
||||
"insert",
|
||||
tableName,
|
||||
insertedRecord as Record<string, any>,
|
||||
company_code
|
||||
);
|
||||
console.log("🚀 조건부 연결 트리거 실행 완료 (INSERT)");
|
||||
}
|
||||
} catch (triggerError) {
|
||||
console.error("⚠️ 조건부 연결 트리거 실행 오류:", triggerError);
|
||||
// 트리거 오류는 로그만 남기고 메인 저장 프로세스는 계속 진행
|
||||
}
|
||||
|
||||
return {
|
||||
id: insertedRecord.id || insertedRecord.objid || 0,
|
||||
screenId: screenId,
|
||||
@@ -343,6 +360,22 @@ export class DynamicFormService {
|
||||
|
||||
const updatedRecord = Array.isArray(result) ? result[0] : result;
|
||||
|
||||
// 🔥 조건부 연결 실행 (UPDATE 트리거)
|
||||
try {
|
||||
if (company_code) {
|
||||
await EventTriggerService.executeEventTriggers(
|
||||
"update",
|
||||
tableName,
|
||||
updatedRecord as Record<string, any>,
|
||||
company_code
|
||||
);
|
||||
console.log("🚀 조건부 연결 트리거 실행 완료 (UPDATE)");
|
||||
}
|
||||
} catch (triggerError) {
|
||||
console.error("⚠️ 조건부 연결 트리거 실행 오류:", triggerError);
|
||||
// 트리거 오류는 로그만 남기고 메인 업데이트 프로세스는 계속 진행
|
||||
}
|
||||
|
||||
return {
|
||||
id: updatedRecord.id || updatedRecord.objid || id,
|
||||
screenId: 0, // 실제 테이블에는 screenId가 없으므로 0으로 설정
|
||||
@@ -362,7 +395,11 @@ export class DynamicFormService {
|
||||
/**
|
||||
* 폼 데이터 삭제 (실제 테이블에서 직접 삭제)
|
||||
*/
|
||||
async deleteFormData(id: number, tableName: string): Promise<void> {
|
||||
async deleteFormData(
|
||||
id: number,
|
||||
tableName: string,
|
||||
companyCode?: string
|
||||
): Promise<void> {
|
||||
try {
|
||||
console.log("🗑️ 서비스: 실제 테이블에서 폼 데이터 삭제 시작:", {
|
||||
id,
|
||||
@@ -382,6 +419,28 @@ export class DynamicFormService {
|
||||
const result = await prisma.$queryRawUnsafe(deleteQuery, id);
|
||||
|
||||
console.log("✅ 서비스: 실제 테이블 삭제 성공:", result);
|
||||
|
||||
// 🔥 조건부 연결 실행 (DELETE 트리거)
|
||||
try {
|
||||
if (
|
||||
companyCode &&
|
||||
result &&
|
||||
Array.isArray(result) &&
|
||||
result.length > 0
|
||||
) {
|
||||
const deletedRecord = result[0] as Record<string, any>;
|
||||
await EventTriggerService.executeEventTriggers(
|
||||
"delete",
|
||||
tableName,
|
||||
deletedRecord,
|
||||
companyCode
|
||||
);
|
||||
console.log("🚀 조건부 연결 트리거 실행 완료 (DELETE)");
|
||||
}
|
||||
} catch (triggerError) {
|
||||
console.error("⚠️ 조건부 연결 트리거 실행 오류:", triggerError);
|
||||
// 트리거 오류는 로그만 남기고 메인 삭제 프로세스는 계속 진행
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("❌ 서비스: 실제 테이블 삭제 실패:", error);
|
||||
throw new Error(`실제 테이블 삭제 실패: ${error}`);
|
||||
|
||||
Reference in New Issue
Block a user