42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
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;
|