52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
import express from 'express';
|
|
|
|
import { Project } from 'entities';
|
|
import { catchErrors } from 'errors';
|
|
import { findEntityOrThrow, updateEntity, deleteEntity, createEntity } from 'utils/typeorm';
|
|
|
|
const router = express.Router();
|
|
|
|
router.get(
|
|
'/projects',
|
|
catchErrors(async (_req, res) => {
|
|
const projects = await Project.find();
|
|
res.respond({ projects });
|
|
}),
|
|
);
|
|
|
|
router.get(
|
|
'/projects/:projectId',
|
|
catchErrors(async (req, res) => {
|
|
const project = await findEntityOrThrow(Project, req.params.projectId, {
|
|
relations: ['users', 'issues', 'issues.comments'],
|
|
});
|
|
res.respond({ project });
|
|
}),
|
|
);
|
|
|
|
router.post(
|
|
'/projects',
|
|
catchErrors(async (req, res) => {
|
|
const project = await createEntity(Project, req.body);
|
|
res.respond({ project });
|
|
}),
|
|
);
|
|
|
|
router.put(
|
|
'/projects/:projectId',
|
|
catchErrors(async (req, res) => {
|
|
const project = await updateEntity(Project, req.params.projectId, req.body);
|
|
res.respond({ project });
|
|
}),
|
|
);
|
|
|
|
router.delete(
|
|
'/projects/:projectId',
|
|
catchErrors(async (req, res) => {
|
|
const project = await deleteEntity(Project, req.params.projectId);
|
|
res.respond({ project });
|
|
}),
|
|
);
|
|
|
|
export default router;
|