feat: Prisma 완전 제거 완료 🎉
최종 작업: 1. config/database.ts 삭제: - Prisma 기반 database.ts 완전 제거 - 더 이상 사용되지 않는 파일 2. referenceCacheService.ts 전환 (3개): - ✅ getTableRowCount: $queryRawUnsafe → query - ✅ cacheReferenceTable: $queryRawUnsafe → query - ✅ batchLookup: $queryRaw → query (ANY 연산자) 전체 완료: - ✅ 모든 Prisma 호출 전환 완료 - ✅ PrismaClient import 완전 제거 (에러핸들러 제외) - ✅ database.ts 삭제 - ✅ Raw Query 기반 시스템으로 완전 전환 최종 진행률: 54/54 (100%) 🎉
This commit is contained in:
parent
e444dd9d39
commit
b5fe2117af
|
|
@ -1,50 +0,0 @@
|
|||
import { PrismaClient } from "@prisma/client";
|
||||
import config from "./environment";
|
||||
|
||||
// Prisma 클라이언트 생성 함수
|
||||
function createPrismaClient() {
|
||||
return new PrismaClient({
|
||||
datasources: {
|
||||
db: {
|
||||
url: config.databaseUrl,
|
||||
},
|
||||
},
|
||||
log: config.debug ? ["query", "info", "warn", "error"] : ["error"],
|
||||
});
|
||||
}
|
||||
|
||||
// 단일 인스턴스 생성
|
||||
const prisma = createPrismaClient();
|
||||
|
||||
// 데이터베이스 연결 테스트
|
||||
async function testConnection() {
|
||||
try {
|
||||
await prisma.$connect();
|
||||
} catch (error) {
|
||||
console.error("❌ 데이터베이스 연결 실패:", error);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// 애플리케이션 종료 시 연결 해제
|
||||
process.on("beforeExit", async () => {
|
||||
await prisma.$disconnect();
|
||||
});
|
||||
|
||||
process.on("SIGINT", async () => {
|
||||
await prisma.$disconnect();
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
process.on("SIGTERM", async () => {
|
||||
await prisma.$disconnect();
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
// 초기 연결 테스트 (개발 환경에서만)
|
||||
if (config.nodeEnv === "development") {
|
||||
testConnection();
|
||||
}
|
||||
|
||||
// 기본 내보내기
|
||||
export = prisma;
|
||||
|
|
@ -1,12 +1,10 @@
|
|||
import { PrismaClient } from "@prisma/client";
|
||||
import { query, queryOne } from "../database/db";
|
||||
import { logger } from "../utils/logger";
|
||||
import {
|
||||
BatchLookupRequest,
|
||||
BatchLookupResponse,
|
||||
} from "../types/tableManagement";
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
interface CacheEntry {
|
||||
data: Map<string, any>;
|
||||
expiry: number;
|
||||
|
|
@ -38,11 +36,12 @@ export class ReferenceCacheService {
|
|||
*/
|
||||
private async getTableRowCount(tableName: string): Promise<number> {
|
||||
try {
|
||||
const countResult = (await prisma.$queryRawUnsafe(`
|
||||
SELECT COUNT(*) as count FROM ${tableName}
|
||||
`)) as Array<{ count: bigint }>;
|
||||
const countResult = await query<{ count: string }>(
|
||||
`SELECT COUNT(*) as count FROM ${tableName}`,
|
||||
[]
|
||||
);
|
||||
|
||||
return Number(countResult[0]?.count || 0);
|
||||
return parseInt(countResult[0]?.count || "0", 10);
|
||||
} catch (error) {
|
||||
logger.error(`테이블 크기 조회 실패: ${tableName}`, error);
|
||||
return 0;
|
||||
|
|
@ -140,13 +139,14 @@ export class ReferenceCacheService {
|
|||
logger.info(`참조 테이블 캐싱 시작: ${tableName}`);
|
||||
|
||||
// 데이터 조회
|
||||
const data = (await prisma.$queryRawUnsafe(`
|
||||
SELECT ${keyColumn} as key, ${displayColumn} as value
|
||||
FROM ${tableName}
|
||||
WHERE ${keyColumn} IS NOT NULL
|
||||
AND ${displayColumn} IS NOT NULL
|
||||
ORDER BY ${keyColumn}
|
||||
`)) as Array<{ key: any; value: any }>;
|
||||
const data = await query<{ key: any; value: any }>(
|
||||
`SELECT ${keyColumn} as key, ${displayColumn} as value
|
||||
FROM ${tableName}
|
||||
WHERE ${keyColumn} IS NOT NULL
|
||||
AND ${displayColumn} IS NOT NULL
|
||||
ORDER BY ${keyColumn}`,
|
||||
[]
|
||||
);
|
||||
|
||||
const dataMap = new Map<string, any>();
|
||||
for (const row of data) {
|
||||
|
|
@ -301,11 +301,12 @@ export class ReferenceCacheService {
|
|||
const keys = missingRequests.map((req) => req.key);
|
||||
const displayColumn = missingRequests[0].displayColumn; // 같은 테이블이므로 동일
|
||||
|
||||
const data = (await prisma.$queryRaw`
|
||||
SELECT key_column as key, ${displayColumn} as value
|
||||
FROM ${tableName}
|
||||
WHERE key_column = ANY(${keys})
|
||||
`) as Array<{ key: any; value: any }>;
|
||||
const data = await query<{ key: any; value: any }>(
|
||||
`SELECT key_column as key, ${displayColumn} as value
|
||||
FROM ${tableName}
|
||||
WHERE key_column = ANY($1)`,
|
||||
[keys]
|
||||
);
|
||||
|
||||
// 결과를 응답에 추가
|
||||
for (const row of data) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue