주요기능 Prisma ORM으로 변경

This commit is contained in:
hyeonsu
2025-09-01 11:00:38 +09:00
parent 14218bad11
commit cb88faa68e
5 changed files with 1135 additions and 1615 deletions

View File

@@ -2,7 +2,6 @@ import { Request, Response } from "express";
import { logger } from "../utils/logger";
import { AuthenticatedRequest } from "../types/auth";
import { MultiLangService } from "../services/multilangService";
import { Client } from "pg";
import {
CreateLanguageRequest,
UpdateLanguageRequest,
@@ -25,29 +24,16 @@ export const getLanguages = async (
try {
logger.info("언어 목록 조회 요청", { user: req.user });
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
});
const multiLangService = new MultiLangService();
const languages = await multiLangService.getLanguages();
await client.connect();
const response: ApiResponse<any[]> = {
success: true,
message: "언어 목록 조회 성공",
data: languages,
};
try {
const multiLangService = new MultiLangService(client);
const languages = await multiLangService.getLanguages();
const response: ApiResponse<any[]> = {
success: true,
message: "언어 목록 조회 성공",
data: languages,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("언어 목록 조회 실패:", error);
res.status(500).json({
@@ -90,33 +76,20 @@ export const createLanguage = async (
return;
}
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
const multiLangService = new MultiLangService();
const createdLanguage = await multiLangService.createLanguage({
...languageData,
createdBy: req.user?.userId || "system",
updatedBy: req.user?.userId || "system",
});
await client.connect();
const response: ApiResponse<any> = {
success: true,
message: "언어가 성공적으로 생성되었습니다.",
data: createdLanguage,
};
try {
const multiLangService = new MultiLangService(client);
const createdLanguage = await multiLangService.createLanguage({
...languageData,
createdBy: req.user?.userId || "system",
updatedBy: req.user?.userId || "system",
});
const response: ApiResponse<any> = {
success: true,
message: "언어가 성공적으로 생성되었습니다.",
data: createdLanguage,
};
res.status(201).json(response);
} finally {
await client.end();
}
res.status(201).json(response);
} catch (error) {
logger.error("언어 생성 실패:", error);
res.status(500).json({
@@ -144,32 +117,19 @@ export const updateLanguage = async (
logger.info("언어 수정 요청", { langCode, languageData, user: req.user });
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
const multiLangService = new MultiLangService();
const updatedLanguage = await multiLangService.updateLanguage(langCode, {
...languageData,
updatedBy: req.user?.userId || "system",
});
await client.connect();
const response: ApiResponse<any> = {
success: true,
message: "언어가 성공적으로 수정되었습니다.",
data: updatedLanguage,
};
try {
const multiLangService = new MultiLangService(client);
const updatedLanguage = await multiLangService.updateLanguage(langCode, {
...languageData,
updatedBy: req.user?.userId || "system",
});
const response: ApiResponse<any> = {
success: true,
message: "언어가 성공적으로 수정되었습니다.",
data: updatedLanguage,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("언어 수정 실패:", error);
res.status(500).json({
@@ -195,29 +155,16 @@ export const toggleLanguage = async (
const { langCode } = req.params;
logger.info("언어 상태 토글 요청", { langCode, user: req.user });
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
});
const multiLangService = new MultiLangService();
const result = await multiLangService.toggleLanguage(langCode);
await client.connect();
const response: ApiResponse<string> = {
success: true,
message: `언어가 ${result}되었습니다.`,
data: result,
};
try {
const multiLangService = new MultiLangService(client);
const result = await multiLangService.toggleLanguage(langCode);
const response: ApiResponse<string> = {
success: true,
message: `언어가 ${result}되었습니다.`,
data: result,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("언어 상태 토글 실패:", error);
res.status(500).json({
@@ -246,34 +193,21 @@ export const getLangKeys = async (
user: req.user,
});
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
const multiLangService = new MultiLangService();
const langKeys = await multiLangService.getLangKeys({
companyCode: companyCode as string,
menuCode: menuCode as string,
keyType: keyType as string,
searchText: searchText as string,
});
await client.connect();
const response: ApiResponse<any[]> = {
success: true,
message: "다국어 키 목록 조회 성공",
data: langKeys,
};
try {
const multiLangService = new MultiLangService(client);
const langKeys = await multiLangService.getLangKeys({
companyCode: companyCode as string,
menuCode: menuCode as string,
keyType: keyType as string,
searchText: searchText as string,
});
const response: ApiResponse<any[]> = {
success: true,
message: "다국어 키 목록 조회 성공",
data: langKeys,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("다국어 키 목록 조회 실패:", error);
res.status(500).json({
@@ -299,29 +233,16 @@ export const getLangTexts = async (
const { keyId } = req.params;
logger.info("다국어 텍스트 조회 요청", { keyId, user: req.user });
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
});
const multiLangService = new MultiLangService();
const langTexts = await multiLangService.getLangTexts(parseInt(keyId));
await client.connect();
const response: ApiResponse<any[]> = {
success: true,
message: "다국어 텍스트 조회 성공",
data: langTexts,
};
try {
const multiLangService = new MultiLangService(client);
const langTexts = await multiLangService.getLangTexts(parseInt(keyId));
const response: ApiResponse<any[]> = {
success: true,
message: "다국어 텍스트 조회 성공",
data: langTexts,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("다국어 텍스트 조회 실패:", error);
res.status(500).json({
@@ -360,33 +281,20 @@ export const createLangKey = async (
return;
}
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
const multiLangService = new MultiLangService();
const keyId = await multiLangService.createLangKey({
...keyData,
createdBy: req.user?.userId || "system",
updatedBy: req.user?.userId || "system",
});
await client.connect();
const response: ApiResponse<number> = {
success: true,
message: "다국어 키가 성공적으로 생성되었습니다.",
data: keyId,
};
try {
const multiLangService = new MultiLangService(client);
const keyId = await multiLangService.createLangKey({
...keyData,
createdBy: req.user?.userId || "system",
updatedBy: req.user?.userId || "system",
});
const response: ApiResponse<number> = {
success: true,
message: "다국어 키가 성공적으로 생성되었습니다.",
data: keyId,
};
res.status(201).json(response);
} finally {
await client.end();
}
res.status(201).json(response);
} catch (error) {
logger.error("다국어 키 생성 실패:", error);
res.status(500).json({
@@ -414,32 +322,19 @@ export const updateLangKey = async (
logger.info("다국어 키 수정 요청", { keyId, keyData, user: req.user });
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
const multiLangService = new MultiLangService();
await multiLangService.updateLangKey(parseInt(keyId), {
...keyData,
updatedBy: req.user?.userId || "system",
});
await client.connect();
const response: ApiResponse<string> = {
success: true,
message: "다국어 키가 성공적으로 수정되었습니다.",
data: "수정 완료",
};
try {
const multiLangService = new MultiLangService(client);
await multiLangService.updateLangKey(parseInt(keyId), {
...keyData,
updatedBy: req.user?.userId || "system",
});
const response: ApiResponse<string> = {
success: true,
message: "다국어 키가 성공적으로 수정되었습니다.",
data: "수정 완료",
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("다국어 키 수정 실패:", error);
res.status(500).json({
@@ -465,29 +360,16 @@ export const deleteLangKey = async (
const { keyId } = req.params;
logger.info("다국어 키 삭제 요청", { keyId, user: req.user });
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
});
const multiLangService = new MultiLangService();
await multiLangService.deleteLangKey(parseInt(keyId));
await client.connect();
const response: ApiResponse<string> = {
success: true,
message: "다국어 키가 성공적으로 삭제되었습니다.",
data: "삭제 완료",
};
try {
const multiLangService = new MultiLangService(client);
await multiLangService.deleteLangKey(parseInt(keyId));
const response: ApiResponse<string> = {
success: true,
message: "다국어 키가 성공적으로 삭제되었습니다.",
data: "삭제 완료",
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("다국어 키 삭제 실패:", error);
res.status(500).json({
@@ -513,29 +395,16 @@ export const toggleLangKey = async (
const { keyId } = req.params;
logger.info("다국어 키 상태 토글 요청", { keyId, user: req.user });
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
});
const multiLangService = new MultiLangService();
const result = await multiLangService.toggleLangKey(parseInt(keyId));
await client.connect();
const response: ApiResponse<string> = {
success: true,
message: `다국어 키가 ${result}되었습니다.`,
data: result,
};
try {
const multiLangService = new MultiLangService(client);
const result = await multiLangService.toggleLangKey(parseInt(keyId));
const response: ApiResponse<string> = {
success: true,
message: `다국어 키가 ${result}되었습니다.`,
data: result,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("다국어 키 상태 토글 실패:", error);
res.status(500).json({
@@ -580,35 +449,22 @@ export const saveLangTexts = async (
return;
}
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
const multiLangService = new MultiLangService();
await multiLangService.saveLangTexts(parseInt(keyId), {
texts: textData.texts.map((text) => ({
...text,
createdBy: req.user?.userId || "system",
updatedBy: req.user?.userId || "system",
})),
});
await client.connect();
const response: ApiResponse<string> = {
success: true,
message: "다국어 텍스트가 성공적으로 저장되었습니다.",
data: "저장 완료",
};
try {
const multiLangService = new MultiLangService(client);
await multiLangService.saveLangTexts(parseInt(keyId), {
texts: textData.texts.map((text) => ({
...text,
createdBy: req.user?.userId || "system",
updatedBy: req.user?.userId || "system",
})),
});
const response: ApiResponse<string> = {
success: true,
message: "다국어 텍스트가 성공적으로 저장되었습니다.",
data: "저장 완료",
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("다국어 텍스트 저장 실패:", error);
res.status(500).json({
@@ -654,34 +510,21 @@ export const getUserText = async (
return;
}
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
const multiLangService = new MultiLangService();
const langText = await multiLangService.getUserText({
companyCode,
menuCode,
langKey,
userLang: userLang as string,
});
await client.connect();
const response: ApiResponse<string> = {
success: true,
message: "사용자별 다국어 텍스트 조회 성공",
data: langText,
};
try {
const multiLangService = new MultiLangService(client);
const langText = await multiLangService.getUserText({
companyCode,
menuCode,
langKey,
userLang: userLang as string,
});
const response: ApiResponse<string> = {
success: true,
message: "사용자별 다국어 텍스트 조회 성공",
data: langText,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("사용자별 다국어 텍스트 조회 실패:", error);
res.status(500).json({
@@ -713,33 +556,20 @@ export const getLangText = async (
user: req.user,
});
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
});
const multiLangService = new MultiLangService();
const langText = await multiLangService.getLangText(
companyCode,
langKey,
langCode
);
await client.connect();
const response: ApiResponse<string> = {
success: true,
message: "특정 키의 다국어 텍스트 조회 성공",
data: langText,
};
try {
const multiLangService = new MultiLangService(client);
const langText = await multiLangService.getLangText(
companyCode,
langKey,
langCode
);
const response: ApiResponse<string> = {
success: true,
message: "특정 키의 다국어 텍스트 조회 성공",
data: langText,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("특정 키의 다국어 텍스트 조회 실패:", error);
res.status(500).json({
@@ -777,29 +607,16 @@ export const deleteLanguage = async (
return;
}
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
});
const multiLangService = new MultiLangService();
await multiLangService.deleteLanguage(langCode);
await client.connect();
const response: ApiResponse<string> = {
success: true,
message: "언어가 성공적으로 삭제되었습니다.",
data: "삭제 완료",
};
try {
const multiLangService = new MultiLangService(client);
await multiLangService.deleteLanguage(langCode);
const response: ApiResponse<string> = {
success: true,
message: "언어가 성공적으로 삭제되었습니다.",
data: "삭제 완료",
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("언어 삭제 실패:", error);
res.status(500).json({
@@ -866,34 +683,21 @@ export const getBatchTranslations = async (
return;
}
// PostgreSQL 클라이언트 생성
const client = new Client({
connectionString:
process.env.DATABASE_URL ||
"postgresql://postgres:postgres@localhost:5432/ilshin",
const multiLangService = new MultiLangService();
const translations = await multiLangService.getBatchTranslations({
companyCode: finalCompanyCode as string,
menuCode: finalMenuCode as string,
userLang: finalUserLang as string,
langKeys,
});
await client.connect();
const response: ApiResponse<Record<string, string>> = {
success: true,
message: "다국어 텍스트 배치 조회 성공",
data: translations,
};
try {
const multiLangService = new MultiLangService(client);
const translations = await multiLangService.getBatchTranslations({
companyCode: finalCompanyCode as string,
menuCode: finalMenuCode as string,
userLang: finalUserLang as string,
langKeys,
});
const response: ApiResponse<Record<string, string>> = {
success: true,
message: "다국어 텍스트 배치 조회 성공",
data: translations,
};
res.status(200).json(response);
} finally {
await client.end();
}
res.status(200).json(response);
} catch (error) {
logger.error("다국어 텍스트 배치 조회 실패:", error);
res.status(500).json({