"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Router = void 0;
const express_1 = __importDefault(require("express"));
const controllers_1 = require("./controllers");
const middleware_1 = require("./middleware");
const router = express_1.default.Router({ mergeParams: true });
/**
* @example
* const { Router } = require("emfrest/router")
*
* @example <caption>Usage</caption>
* app.use("/modelName", Router(model, modelName))
*
* @description An express router for a resource.
*
* @param {mongoose.Model} model Mongoose model.
* @param {string} modelName Model name (singular).
*
* @returns An express router.
*/
const Router = (model, modelName) => {
router
.route(`/`)
.get((0, middleware_1.appendModelData)(model, modelName), controllers_1.getAllController)
.post((0, middleware_1.appendModelData)(model, modelName), controllers_1.createResourceController);
router
.route(`/:${modelName}Id`)
.get((0, middleware_1.appendModelData)(model, modelName), controllers_1.getOneByIdController)
.put((0, middleware_1.appendModelData)(model, modelName), controllers_1.updateOneByIdController)
.delete((0, middleware_1.appendModelData)(model, modelName), controllers_1.deleteOneByIdController);
return router;
};
exports.Router = Router;