// src/routes/usage.routes.js // 사용량 라우트 const express = require('express'); const { query } = require('express-validator'); const usageController = require('../controllers/usage.controller'); const { authenticateJWT } = require('../middlewares/auth.middleware'); const { validateRequest } = require('../middlewares/validation.middleware'); const router = express.Router(); // 모든 라우트에 JWT 인증 적용 router.use(authenticateJWT); /** * GET /api/v1/usage * 사용량 요약 조회 */ router.get('/', usageController.getSummary); /** * GET /api/v1/usage/daily * 일별 사용량 조회 */ router.get( '/daily', [ query('startDate') .optional() .isISO8601() .withMessage('시작 날짜는 ISO 8601 형식이어야 합니다'), query('endDate') .optional() .isISO8601() .withMessage('종료 날짜는 ISO 8601 형식이어야 합니다'), validateRequest, ], usageController.getDailyUsage ); /** * GET /api/v1/usage/monthly * 월별 사용량 조회 */ router.get( '/monthly', [ query('year') .optional() .isInt({ min: 2020, max: 2100 }) .withMessage('연도는 2020-2100 사이여야 합니다'), query('month') .optional() .isInt({ min: 1, max: 12 }) .withMessage('월은 1-12 사이여야 합니다'), validateRequest, ], usageController.getMonthlyUsage ); /** * GET /api/v1/usage/logs * 사용량 로그 목록 조회 */ router.get( '/logs', [ query('page') .optional() .isInt({ min: 1 }) .withMessage('페이지는 1 이상이어야 합니다'), query('limit') .optional() .isInt({ min: 1, max: 100 }) .withMessage('한도는 1-100 사이여야 합니다'), validateRequest, ], usageController.getLogs ); module.exports = router;