버튼에 제어 달기
This commit is contained in:
@@ -10,6 +10,7 @@ import {
|
||||
} from "../types/externalDbTypes";
|
||||
import { PasswordEncryption } from "../utils/passwordEncryption";
|
||||
import { DatabaseConnectorFactory } from "../database/DatabaseConnectorFactory";
|
||||
import logger from "../utils/logger";
|
||||
|
||||
export class ExternalDbConnectionService {
|
||||
/**
|
||||
@@ -694,7 +695,8 @@ export class ExternalDbConnectionService {
|
||||
*/
|
||||
static async executeQuery(
|
||||
id: number,
|
||||
query: string
|
||||
query: string,
|
||||
params: any[] = []
|
||||
): Promise<ApiResponse<any[]>> {
|
||||
try {
|
||||
// 연결 정보 조회
|
||||
@@ -751,7 +753,20 @@ export class ExternalDbConnectionService {
|
||||
|
||||
let result;
|
||||
try {
|
||||
result = await connector.executeQuery(query);
|
||||
const dbType = connection.db_type?.toLowerCase() || 'postgresql';
|
||||
|
||||
// 파라미터 바인딩을 지원하는 DB 타입들
|
||||
const supportedDbTypes = ['oracle', 'mysql', 'mariadb', 'postgresql', 'sqlite', 'sqlserver', 'mssql'];
|
||||
|
||||
if (supportedDbTypes.includes(dbType) && params.length > 0) {
|
||||
// 파라미터 바인딩 지원 DB: 안전한 파라미터 바인딩 사용
|
||||
logger.info(`${dbType.toUpperCase()} 파라미터 바인딩 실행:`, { query, params });
|
||||
result = await (connector as any).executeQuery(query, params);
|
||||
} else {
|
||||
// 파라미터가 없거나 지원하지 않는 DB: 기본 방식 사용
|
||||
logger.info(`${dbType.toUpperCase()} 기본 쿼리 실행:`, { query });
|
||||
result = await connector.executeQuery(query);
|
||||
}
|
||||
} finally {
|
||||
// 🔧 연결 해제 추가 - 메모리 누수 방지
|
||||
await DatabaseConnectorFactory.closeConnector(id, connection.db_type);
|
||||
|
||||
Reference in New Issue
Block a user