Refactor recipes routes: explicit dependency injection
- Updated all recipes route modules to use destructured dependencies - Added JSDoc comments for factory functions - Replaced ctx. references with direct parameter access - All files pass syntax validation Files refactored: - routes/recipes/deploy.js - routes/recipes/manage.js - routes/recipes/index.js (orchestrator)
This commit is contained in:
@@ -3,14 +3,28 @@ const deployRoutes = require('./deploy');
|
||||
const manageRoutes = require('./manage');
|
||||
const { NotFoundError } = require('../../errors');
|
||||
|
||||
/**
|
||||
* Recipes routes aggregator
|
||||
* @param {Object} ctx - Application context (for backward compatibility)
|
||||
* @returns {express.Router}
|
||||
*/
|
||||
module.exports = function(ctx) {
|
||||
const router = express.Router();
|
||||
|
||||
const deps = {
|
||||
docker: ctx.docker,
|
||||
credentialManager: ctx.credentialManager,
|
||||
servicesStateManager: ctx.servicesStateManager,
|
||||
asyncHandler: ctx.asyncHandler,
|
||||
errorResponse: ctx.errorResponse,
|
||||
log: ctx.log
|
||||
};
|
||||
|
||||
// All recipe routes require premium license
|
||||
router.use(ctx.licenseManager.requirePremium('recipes'));
|
||||
|
||||
// GET /api/recipes/templates — list all recipe templates
|
||||
router.get('/templates', ctx.asyncHandler(async (req, res) => {
|
||||
router.get('/templates', deps.asyncHandler(async (req, res) => {
|
||||
const { RECIPE_TEMPLATES, RECIPE_CATEGORIES } = require('../../recipe-templates');
|
||||
const templates = Object.entries(RECIPE_TEMPLATES).map(([id, recipe]) => ({
|
||||
id,
|
||||
@@ -39,7 +53,7 @@ module.exports = function(ctx) {
|
||||
}, 'recipe-templates'));
|
||||
|
||||
// GET /api/recipes/templates/:recipeId — get single recipe template detail
|
||||
router.get('/templates/:recipeId', ctx.asyncHandler(async (req, res) => {
|
||||
router.get('/templates/:recipeId', deps.asyncHandler(async (req, res) => {
|
||||
const { RECIPE_TEMPLATES } = require('../../recipe-templates');
|
||||
const recipe = RECIPE_TEMPLATES[req.params.recipeId];
|
||||
if (!recipe) throw new NotFoundError(`Recipe template ${req.params.recipeId}`);
|
||||
@@ -48,8 +62,8 @@ module.exports = function(ctx) {
|
||||
}, 'recipe-template-detail'));
|
||||
|
||||
// Mount deploy and manage sub-routes
|
||||
router.use(deployRoutes(ctx));
|
||||
router.use(manageRoutes(ctx));
|
||||
router.use(deployRoutes(deps));
|
||||
router.use(manageRoutes(deps));
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user