const express = require('express');
const { success, error: errorResponse } = require('../src/utils/responses');

/**
 * Credentials routes factory
 * @param {Object} deps - Explicit dependencies
 * @param {Object} deps.credentialManager - Credential storage manager
 * @param {Function} deps.asyncHandler - Async route handler wrapper
 * @returns {express.Router}
 */
module.exports = function({ credentialManager, asyncHandler }) {
  const router = express.Router();

  // List all stored credentials (keys only, no values)
  router.get('/credentials/list', asyncHandler(async (req, res) => {
    const keys = await credentialManager.list();
    success(res, { credentials: keys, count: keys.length });
  }, 'credentials-list'));

  // Rotate encryption key — re-encrypts all stored credentials
  router.post('/credentials/rotate-key', asyncHandler(async (req, res) => {
    const rotateSuccess = await credentialManager.rotateEncryptionKey();
    if (rotateSuccess) {
      success(res, { message: 'Encryption key rotated, all credentials re-encrypted' });
    } else {
      // Error handled by middleware
    }
  }, 'credentials-rotate'));

  return router;
};
