feat: Routes & Service Prisma 전환 완료
완료된 파일: 1. ddlRoutes.ts (2개): - ✅ health check: PrismaClient 동적 import 제거 - ✅ SELECT 1 쿼리를 query() 함수로 변경 2. companyManagementRoutes.ts (2개): - ✅ findUnique → queryOne (회사 존재 확인) - ✅ update → query (soft delete) 3. multiConnectionQueryService.ts (4개): - ✅ executeSelect: $queryRawUnsafe → query - ✅ executeInsert: $queryRawUnsafe → query - ✅ executeUpdate: $queryRawUnsafe → query - ✅ executeDelete: $queryRawUnsafe → query 기술적 개선: - 동적 import 제거로 성능 향상 - 일관된 쿼리 인터페이스 사용 - 파라미터 전달 방식 통일 (...params → params) 전체 진행률: 50/54 (92.6%) 남은 작업: database.ts (4개 - 제거 예정)
This commit is contained in:
parent
97f4d11870
commit
bc54d37ff2
|
|
@ -3,10 +3,9 @@ import { authenticateToken } from "../middleware/authMiddleware";
|
|||
import { AuthenticatedRequest } from "../types/auth";
|
||||
import { logger } from "../utils/logger";
|
||||
import { FileSystemManager } from "../utils/fileSystemManager";
|
||||
import { PrismaClient } from "@prisma/client";
|
||||
import { query, queryOne } from "../database/db";
|
||||
|
||||
const router = express.Router();
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
// 모든 라우트에 인증 미들웨어 적용
|
||||
router.use(authenticateToken);
|
||||
|
|
@ -29,9 +28,10 @@ router.delete(
|
|||
});
|
||||
|
||||
// 1. 회사 존재 확인
|
||||
const existingCompany = await prisma.company_mng.findUnique({
|
||||
where: { company_code: companyCode },
|
||||
});
|
||||
const existingCompany = await queryOne<any>(
|
||||
`SELECT * FROM company_mng WHERE company_code = $1`,
|
||||
[companyCode]
|
||||
);
|
||||
|
||||
if (!existingCompany) {
|
||||
res.status(404).json({
|
||||
|
|
@ -58,12 +58,10 @@ router.delete(
|
|||
}
|
||||
|
||||
// 3. 데이터베이스에서 회사 삭제 (soft delete)
|
||||
await prisma.company_mng.update({
|
||||
where: { company_code: companyCode },
|
||||
data: {
|
||||
status: "deleted",
|
||||
},
|
||||
});
|
||||
await query(
|
||||
`UPDATE company_mng SET status = 'deleted' WHERE company_code = $1`,
|
||||
[companyCode]
|
||||
);
|
||||
|
||||
logger.info("회사 삭제 완료", {
|
||||
companyCode,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import {
|
|||
validateDDLPermission,
|
||||
} from "../middleware/superAdminMiddleware";
|
||||
import { authenticateToken } from "../middleware/authMiddleware";
|
||||
import { query } from "../database/db";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
|
|
@ -180,11 +181,7 @@ router.get("/info", authenticateToken, requireSuperAdmin, (req, res) => {
|
|||
router.get("/health", authenticateToken, async (req, res) => {
|
||||
try {
|
||||
// 기본적인 데이터베이스 연결 테스트
|
||||
const { PrismaClient } = await import("@prisma/client");
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
await prisma.$queryRaw`SELECT 1`;
|
||||
await prisma.$disconnect();
|
||||
await query("SELECT 1");
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { ExternalDbConnectionService } from "./externalDbConnectionService";
|
|||
import { TableManagementService } from "./tableManagementService";
|
||||
import { ExternalDbConnection, ApiResponse } from "../types/externalDbTypes";
|
||||
import { ColumnTypeInfo, TableInfo } from "../types/tableManagement";
|
||||
import prisma from "../config/database";
|
||||
import { query } from "../database/db";
|
||||
import { logger } from "../utils/logger";
|
||||
|
||||
// 🔧 Prisma 클라이언트 중복 생성 방지 - 기존 인스턴스 재사용
|
||||
|
|
@ -1002,7 +1002,7 @@ export class MultiConnectionQueryService {
|
|||
queryParams.push(...Object.values(conditions));
|
||||
}
|
||||
|
||||
return await prisma.$queryRawUnsafe(query, ...queryParams);
|
||||
return await query(query, queryParams);
|
||||
|
||||
case "insert":
|
||||
if (!data) throw new Error("INSERT 작업에는 데이터가 필요합니다.");
|
||||
|
|
@ -1019,11 +1019,10 @@ export class MultiConnectionQueryService {
|
|||
RETURNING *
|
||||
`;
|
||||
|
||||
const insertResult = await prisma.$queryRawUnsafe(
|
||||
insertQuery,
|
||||
...insertValues
|
||||
);
|
||||
return Array.isArray(insertResult) ? insertResult[0] : insertResult;
|
||||
const insertResult = await query(insertQuery, insertValues);
|
||||
return Array.isArray(insertResult) && insertResult.length > 0
|
||||
? insertResult[0]
|
||||
: insertResult;
|
||||
|
||||
case "update":
|
||||
if (!data) throw new Error("UPDATE 작업에는 데이터가 필요합니다.");
|
||||
|
|
@ -1052,7 +1051,7 @@ export class MultiConnectionQueryService {
|
|||
...Object.values(data),
|
||||
...Object.values(conditions),
|
||||
];
|
||||
return await prisma.$queryRawUnsafe(updateQuery, ...updateParams);
|
||||
return await query(updateQuery, updateParams);
|
||||
|
||||
case "delete":
|
||||
if (!conditions)
|
||||
|
|
@ -1068,10 +1067,7 @@ export class MultiConnectionQueryService {
|
|||
RETURNING *
|
||||
`;
|
||||
|
||||
return await prisma.$queryRawUnsafe(
|
||||
deleteQuery,
|
||||
...Object.values(conditions)
|
||||
);
|
||||
return await query(deleteQuery, Object.values(conditions));
|
||||
|
||||
default:
|
||||
throw new Error(`지원하지 않는 작업입니다: ${operation}`);
|
||||
|
|
|
|||
Loading…
Reference in New Issue