Implemented issue comments
This commit is contained in:
33
api/src/controllers/comments.ts
Normal file
33
api/src/controllers/comments.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import express from 'express';
|
||||
|
||||
import { Comment } from 'entities';
|
||||
import { catchErrors } from 'errors';
|
||||
import { updateEntity, deleteEntity, createEntity } from 'utils/typeorm';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.post(
|
||||
'/comments',
|
||||
catchErrors(async (req, res) => {
|
||||
const comment = await createEntity(Comment, req.body);
|
||||
res.respond({ comment });
|
||||
}),
|
||||
);
|
||||
|
||||
router.put(
|
||||
'/comments/:commentId',
|
||||
catchErrors(async (req, res) => {
|
||||
const comment = await updateEntity(Comment, req.params.commentId, req.body);
|
||||
res.respond({ comment });
|
||||
}),
|
||||
);
|
||||
|
||||
router.delete(
|
||||
'/comments/:commentId',
|
||||
catchErrors(async (req, res) => {
|
||||
const comment = await deleteEntity(Comment, req.params.commentId);
|
||||
res.respond({ comment });
|
||||
}),
|
||||
);
|
||||
|
||||
export default router;
|
||||
@@ -10,7 +10,7 @@ router.get(
|
||||
'/issues/:issueId',
|
||||
catchErrors(async (req, res) => {
|
||||
const issue = await findEntityOrThrow(Issue, req.params.issueId, {
|
||||
relations: ['users', 'comments'],
|
||||
relations: ['users', 'comments', 'comments.user'],
|
||||
});
|
||||
res.respond({ issue });
|
||||
}),
|
||||
|
||||
@@ -6,7 +6,6 @@ import {
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
ManyToOne,
|
||||
RelationId,
|
||||
} from 'typeorm';
|
||||
|
||||
import is from 'utils/validation';
|
||||
@@ -36,7 +35,7 @@ class Comment extends BaseEntity {
|
||||
)
|
||||
user: User;
|
||||
|
||||
@RelationId((comment: Comment) => comment.user)
|
||||
@Column('integer')
|
||||
userId: number;
|
||||
|
||||
@ManyToOne(
|
||||
@@ -45,6 +44,9 @@ class Comment extends BaseEntity {
|
||||
{ onDelete: 'CASCADE' },
|
||||
)
|
||||
issue: Issue;
|
||||
|
||||
@Column('integer')
|
||||
issueId: number;
|
||||
}
|
||||
|
||||
export default Comment;
|
||||
|
||||
@@ -7,8 +7,9 @@ import cors from 'cors';
|
||||
import createDatabaseConnection from 'database/connection';
|
||||
import { authenticateUser } from 'middleware/authentication';
|
||||
import authenticationRoutes from 'controllers/authentication';
|
||||
import projectsRoutes from 'controllers/projects';
|
||||
import commentsRoutes from 'controllers/comments';
|
||||
import issuesRoutes from 'controllers/issues';
|
||||
import projectsRoutes from 'controllers/projects';
|
||||
import usersRoutes from 'controllers/users';
|
||||
import { RouteNotFoundError } from 'errors';
|
||||
import { errorHandler } from 'errors/errorHandler';
|
||||
@@ -40,8 +41,9 @@ const initializeExpress = (): void => {
|
||||
|
||||
app.use('/', authenticateUser);
|
||||
|
||||
app.use('/', projectsRoutes);
|
||||
app.use('/', commentsRoutes);
|
||||
app.use('/', issuesRoutes);
|
||||
app.use('/', projectsRoutes);
|
||||
app.use('/', usersRoutes);
|
||||
|
||||
app.use((req, _res, next) => next(new RouteNotFoundError(req.originalUrl)));
|
||||
|
||||
Reference in New Issue
Block a user