다국어 언어삭제기능

This commit is contained in:
kjs
2025-08-29 10:44:55 +09:00
parent 11f40c3fc3
commit c00026c83d
4 changed files with 124 additions and 1 deletions

View File

@@ -840,6 +840,67 @@ export class MultiLangService {
}
}
/**
* 언어 삭제
*/
async deleteLanguage(langCode: string): Promise<void> {
try {
logger.info("언어 삭제 시작", { langCode });
// 기존 언어 확인
const checkQuery = `
SELECT lang_code FROM language_master WHERE lang_code = $1
`;
const checkResult = await this.client.query(checkQuery, [langCode]);
if (checkResult.rows.length === 0) {
throw new Error(`언어를 찾을 수 없습니다: ${langCode}`);
}
// 트랜잭션 시작
await this.client.query("BEGIN");
try {
// 관련된 다국어 텍스트 삭제
const deleteTextsQuery = `
DELETE FROM multi_lang_text
WHERE key_id IN (
SELECT key_id FROM multi_lang_key_master
WHERE company_code = '*' OR company_code = 'SYSTEM'
)
`;
await this.client.query(deleteTextsQuery);
// 관련된 다국어 키 삭제 (시스템 레벨)
const deleteKeysQuery = `
DELETE FROM multi_lang_key_master
WHERE company_code = '*' OR company_code = 'SYSTEM'
`;
await this.client.query(deleteKeysQuery);
// 언어 마스터 삭제
const deleteLanguageQuery = `
DELETE FROM language_master WHERE lang_code = $1
`;
await this.client.query(deleteLanguageQuery, [langCode]);
// 트랜잭션 커밋
await this.client.query("COMMIT");
logger.info("언어 삭제 완료", { langCode });
} catch (error) {
// 트랜잭션 롤백
await this.client.query("ROLLBACK");
throw error;
}
} catch (error) {
logger.error("언어 삭제 중 오류 발생:", error);
throw new Error(
`언어 삭제 실패: ${error instanceof Error ? error.message : "Unknown error"}`
);
}
}
/**
* 기본 번역 생성 (키를 그대로 반환)
*/