외부 호출 설정 관리 서비스의 모든 Prisma 호출을 Raw Query로 전환:
## 전환 완료 (8개 Prisma 호출)
1. **getConfigs()** - 목록 조회
- prisma.findMany → query<ExternalCallConfig>()
- 동적 WHERE 조건 (5개 필터)
- ILIKE 검색 (config_name, description)
2. **getConfigById()** - 단건 조회
- prisma.findUnique → queryOne<ExternalCallConfig>()
3-4. **createConfig()** - 생성
- 중복 검사: prisma.findFirst → queryOne()
- 생성: prisma.create → queryOne() with INSERT RETURNING
- JSON 필드 처리: config_data
5-6. **updateConfig()** - 수정
- 중복 검사: prisma.findFirst → queryOne() with id != $4
- 수정: prisma.update → queryOne() with 동적 UPDATE
- 9개 필드에 대한 조건부 SET 절 생성
7. **deleteConfig()** - 논리 삭제
- prisma.update → query() with is_active = 'N'
8. **getExternalCallConfigsForButtonControl()** - 버튼 제어용
- prisma.findMany with select → query() with SELECT
## 기술적 개선사항
- **동적 WHERE 조건**: 5개 필터 조건 조합 및 파라미터 인덱싱
- **동적 UPDATE 쿼리**: 변경된 필드만 포함하는 SET 절 생성
- **JSON 필드**: config_data를 JSON.stringify()로 처리
- **ILIKE 검색**: 대소문자 구분 없는 검색 구현
- **중복 검사**: id 제외 조건으로 자신 제외 로직 유지
## 코드 정리
- prisma import 완전 제거
- query, queryOne 함수 사용
- 컴파일 및 린터 오류 없음
문서: PHASE3.12_EXTERNAL_CALL_CONFIG_SERVICE_MIGRATION.md
진행률: Phase 3 136/162 (84.0%)
Phase 1 완료: Raw Query 기반 데이터베이스 아키텍처 구축
✅ 구현 완료 내용:
- DatabaseManager 클래스 구현 (연결 풀, 트랜잭션 관리)
- QueryBuilder 유틸리티 (동적 쿼리 생성)
- 타입 정의 및 검증 로직 (database.ts, databaseValidator.ts)
- 단위 테스트 작성 및 통과
🔧 전환 완료 서비스:
- externalCallConfigService.ts (Raw Query 전환)
- multiConnectionQueryService.ts (Raw Query 전환)
📚 문서:
- PHASE1_USAGE_GUIDE.md (사용 가이드)
- DETAILED_FILE_MIGRATION_PLAN.md (상세 계획)
- PRISMA_TO_RAW_QUERY_MIGRATION_PLAN.md (Phase 1 완료 표시)
🧪 테스트:
- database.test.ts (핵심 기능 테스트)
- 모든 테스트 통과 확인
이제 Phase 2 (핵심 서비스 전환)로 진행 가능
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>