공차등록성공
This commit is contained in:
@@ -22,9 +22,9 @@ router.use(authenticateToken);
|
||||
// 폼 데이터 CRUD
|
||||
router.post("/save", saveFormData); // 기존 버전 (레거시 지원)
|
||||
router.post("/save-enhanced", saveFormDataEnhanced); // 개선된 버전
|
||||
router.put("/update-field", updateFieldValue); // 특정 필드만 업데이트 (다른 테이블 지원) - /:id 보다 먼저 선언!
|
||||
router.put("/:id", updateFormData);
|
||||
router.patch("/:id/partial", updateFormDataPartial); // 부분 업데이트
|
||||
router.put("/update-field", updateFieldValue); // 특정 필드만 업데이트 (다른 테이블 지원)
|
||||
router.delete("/:id", deleteFormData);
|
||||
router.get("/:id", getFormData);
|
||||
|
||||
|
||||
@@ -1662,12 +1662,47 @@ export class DynamicFormService {
|
||||
companyCode,
|
||||
});
|
||||
|
||||
// 멀티테넌시: company_code 조건 추가 (최고관리자는 제외)
|
||||
let whereClause = `"${keyField}" = $1`;
|
||||
const params: any[] = [keyValue, updateValue, userId];
|
||||
let paramIndex = 4;
|
||||
// 테이블 컬럼 정보 조회 (updated_by, updated_at 존재 여부 확인)
|
||||
const columnQuery = `
|
||||
SELECT column_name
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = $1 AND column_name IN ('updated_by', 'updated_at', 'company_code')
|
||||
`;
|
||||
const columnResult = await client.query(columnQuery, [tableName]);
|
||||
const existingColumns = columnResult.rows.map((row: any) => row.column_name);
|
||||
|
||||
const hasUpdatedBy = existingColumns.includes('updated_by');
|
||||
const hasUpdatedAt = existingColumns.includes('updated_at');
|
||||
const hasCompanyCode = existingColumns.includes('company_code');
|
||||
|
||||
if (companyCode && companyCode !== "*") {
|
||||
console.log("🔍 [updateFieldValue] 테이블 컬럼 확인:", {
|
||||
hasUpdatedBy,
|
||||
hasUpdatedAt,
|
||||
hasCompanyCode,
|
||||
});
|
||||
|
||||
// 동적 SET 절 구성
|
||||
let setClause = `"${updateField}" = $1`;
|
||||
const params: any[] = [updateValue];
|
||||
let paramIndex = 2;
|
||||
|
||||
if (hasUpdatedBy) {
|
||||
setClause += `, updated_by = $${paramIndex}`;
|
||||
params.push(userId);
|
||||
paramIndex++;
|
||||
}
|
||||
|
||||
if (hasUpdatedAt) {
|
||||
setClause += `, updated_at = NOW()`;
|
||||
}
|
||||
|
||||
// WHERE 절 구성
|
||||
let whereClause = `"${keyField}" = $${paramIndex}`;
|
||||
params.push(keyValue);
|
||||
paramIndex++;
|
||||
|
||||
// 멀티테넌시: company_code 조건 추가 (최고관리자는 제외, 컬럼이 있는 경우만)
|
||||
if (hasCompanyCode && companyCode && companyCode !== "*") {
|
||||
whereClause += ` AND company_code = $${paramIndex}`;
|
||||
params.push(companyCode);
|
||||
paramIndex++;
|
||||
@@ -1675,9 +1710,7 @@ export class DynamicFormService {
|
||||
|
||||
const sqlQuery = `
|
||||
UPDATE "${tableName}"
|
||||
SET "${updateField}" = $2,
|
||||
updated_by = $3,
|
||||
updated_at = NOW()
|
||||
SET ${setClause}
|
||||
WHERE ${whereClause}
|
||||
`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user