// 배치 실행 로그 컨트롤러 // 작성일: 2024-12-24 import { Request, Response } from "express"; import { AuthenticatedRequest } from "../types/auth"; import { BatchExecutionLogService } from "../services/batchExecutionLogService"; import { BatchExecutionLogFilter, CreateBatchExecutionLogRequest, UpdateBatchExecutionLogRequest } from "../types/batchExecutionLogTypes"; export class BatchExecutionLogController { /** * 배치 실행 로그 목록 조회 */ static async getExecutionLogs(req: AuthenticatedRequest, res: Response) { try { const { batch_config_id, execution_status, start_date, end_date, page, limit } = req.query; const filter: BatchExecutionLogFilter = { batch_config_id: batch_config_id ? Number(batch_config_id) : undefined, execution_status: execution_status as string, start_date: start_date ? new Date(start_date as string) : undefined, end_date: end_date ? new Date(end_date as string) : undefined, page: page ? Number(page) : undefined, limit: limit ? Number(limit) : undefined }; const result = await BatchExecutionLogService.getExecutionLogs(filter); if (result.success) { res.json(result); } else { res.status(500).json(result); } } catch (error) { console.error("배치 실행 로그 조회 오류:", error); res.status(500).json({ success: false, message: "배치 실행 로그 조회 중 오류가 발생했습니다.", error: error instanceof Error ? error.message : "알 수 없는 오류" }); } } /** * 배치 실행 로그 생성 */ static async createExecutionLog(req: AuthenticatedRequest, res: Response) { try { const data: CreateBatchExecutionLogRequest = req.body; const result = await BatchExecutionLogService.createExecutionLog(data); if (result.success) { res.status(201).json(result); } else { res.status(500).json(result); } } catch (error) { console.error("배치 실행 로그 생성 오류:", error); res.status(500).json({ success: false, message: "배치 실행 로그 생성 중 오류가 발생했습니다.", error: error instanceof Error ? error.message : "알 수 없는 오류" }); } } /** * 배치 실행 로그 업데이트 */ static async updateExecutionLog(req: AuthenticatedRequest, res: Response) { try { const { id } = req.params; const data: UpdateBatchExecutionLogRequest = req.body; const result = await BatchExecutionLogService.updateExecutionLog(Number(id), data); if (result.success) { res.json(result); } else { res.status(500).json(result); } } catch (error) { console.error("배치 실행 로그 업데이트 오류:", error); res.status(500).json({ success: false, message: "배치 실행 로그 업데이트 중 오류가 발생했습니다.", error: error instanceof Error ? error.message : "알 수 없는 오류" }); } } /** * 배치 실행 로그 삭제 */ static async deleteExecutionLog(req: AuthenticatedRequest, res: Response) { try { const { id } = req.params; const result = await BatchExecutionLogService.deleteExecutionLog(Number(id)); if (result.success) { res.json(result); } else { res.status(500).json(result); } } catch (error) { console.error("배치 실행 로그 삭제 오류:", error); res.status(500).json({ success: false, message: "배치 실행 로그 삭제 중 오류가 발생했습니다.", error: error instanceof Error ? error.message : "알 수 없는 오류" }); } } /** * 특정 배치의 최신 실행 로그 조회 */ static async getLatestExecutionLog(req: AuthenticatedRequest, res: Response) { try { const { batchConfigId } = req.params; const result = await BatchExecutionLogService.getLatestExecutionLog(Number(batchConfigId)); if (result.success) { res.json(result); } else { res.status(500).json(result); } } catch (error) { console.error("최신 배치 실행 로그 조회 오류:", error); res.status(500).json({ success: false, message: "최신 배치 실행 로그 조회 중 오류가 발생했습니다.", error: error instanceof Error ? error.message : "알 수 없는 오류" }); } } /** * 배치 실행 통계 조회 */ static async getExecutionStats(req: AuthenticatedRequest, res: Response) { try { const { batch_config_id, start_date, end_date } = req.query; const result = await BatchExecutionLogService.getExecutionStats( batch_config_id ? Number(batch_config_id) : undefined, start_date ? new Date(start_date as string) : undefined, end_date ? new Date(end_date as string) : undefined ); if (result.success) { res.json(result); } else { res.status(500).json(result); } } catch (error) { console.error("배치 실행 통계 조회 오류:", error); res.status(500).json({ success: false, message: "배치 실행 통계 조회 중 오류가 발생했습니다.", error: error instanceof Error ? error.message : "알 수 없는 오류" }); } } }