const { createEntityRouter } = require('../factories/router.factory'); const ProjectsService = require('../services/projects'); const ProjectsDBApi = require('../db/api/projects'); const { wrapAsync, commonErrorHandler } = require('../helpers'); const { validateRequest } = require('../middlewares/validate-request'); const { projects: projectSchemas } = require('../validators/request-schemas'); // Create base router with factory (includes all standard CRUD endpoints) const router = createEntityRouter('projects', ProjectsService, ProjectsDBApi, { permissionEntity: 'projects', csvFields: [ 'id', 'name', 'slug', 'description', 'logo_url', 'favicon_url', 'og_image_url', ], validation: { create: projectSchemas.create, update: projectSchemas.update, }, }); // Custom endpoint: Clone project router.post( '/:id/clone', validateRequest(projectSchemas.clone), wrapAsync(async (req, res) => { const payload = await ProjectsService.cloneFromProject( req.params.id, req.currentUser, ); res.status(200).send(payload); }), ); router.use('/', commonErrorHandler); module.exports = router;