From 14c2ad98bb9e947f056ebc401956094374a43293 Mon Sep 17 00:00:00 2001
From: pt00371 <pt00371@surrey.ac.uk>
Date: Fri, 24 Mar 2023 07:42:03 +0000
Subject: [PATCH] basic routes,controllers,models added.not complete

---
 comment-service/src/controllers/Comment.ts | 47 ++++++++++++++++++++++
 comment-service/src/models/Comment.ts      | 24 +++++++++++
 comment-service/src/routes/Comment.ts      | 10 +++++
 comment-service/src/server.ts              |  3 +-
 4 files changed, 83 insertions(+), 1 deletion(-)
 create mode 100644 comment-service/src/controllers/Comment.ts
 create mode 100644 comment-service/src/models/Comment.ts
 create mode 100644 comment-service/src/routes/Comment.ts

diff --git a/comment-service/src/controllers/Comment.ts b/comment-service/src/controllers/Comment.ts
new file mode 100644
index 00000000..686076ef
--- /dev/null
+++ b/comment-service/src/controllers/Comment.ts
@@ -0,0 +1,47 @@
+import { NextFunction, Request, Response } from "express";
+import mongoose from 'mongoose';
+import Comment from "../models/Comment";
+
+const createComment = (req: Request, res: Response, next: NextFunction) => {
+    const { body } = req.body;
+
+    const comment = new Comment({
+        _id: new mongoose.Types.ObjectId(),
+        body
+    });
+
+    return comment
+        .save()
+        .then((comment) => res.status(201).json({ comment }))
+        .catch((error) => res.status(500).json({ error }));
+
+};
+
+
+
+
+/*
+const readComment = (req: Request, res: Response, next: NextFunction) => {
+    const commentId = req.params.commentId;
+
+    return Comment.findById(commentId)
+        .then((comment) => ( comment ? res.status(200).json({ comment }) : res.status(404).json({ message: ' Not Found'})))
+        .catch((error) => res.status(500).json({ error }));
+
+}
+*/
+
+const readAllComments = (req: Request, res: Response, next: NextFunction) => {
+
+    return Comment.find()
+        .then((comments) => res.status(200).json({ comments }))
+        .catch((error) => res.status(500).json({ error }));
+
+}
+
+
+export default { createComment,  readAllComments}
+
+
+//const createComment = (req: Request, res: Response, next: NextFunction) => {}
+//const createComment = (req: Request, res: Response, next: NextFunction) => {}
\ No newline at end of file
diff --git a/comment-service/src/models/Comment.ts b/comment-service/src/models/Comment.ts
new file mode 100644
index 00000000..068734b9
--- /dev/null
+++ b/comment-service/src/models/Comment.ts
@@ -0,0 +1,24 @@
+import mongoose, {Document, Schema} from 'mongoose';
+
+export interface IComment {
+    user_id: number;
+    post_id: number;
+    body: string;
+}
+
+export interface ICommentModel extends IComment, Document{}
+
+const CommentSchema: Schema = new Schema(
+    {   //Commented Out for testing
+        //user_id:{ type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true},
+        //post_id:{ type: mongoose.Schema.Types.ObjectId, ref: 'Post', required: true},
+        body: { type: String, required: true },
+    },
+    {
+        timestamps: true,
+    }
+
+)
+
+export default mongoose.model<ICommentModel>('Comments', CommentSchema)
+
diff --git a/comment-service/src/routes/Comment.ts b/comment-service/src/routes/Comment.ts
new file mode 100644
index 00000000..f4098281
--- /dev/null
+++ b/comment-service/src/routes/Comment.ts
@@ -0,0 +1,10 @@
+import express from "express";
+import controller from '../controllers/Comment';
+
+const router = express.Router();
+
+router.post('/create', controller.createComment);
+router.get('/get/', controller.readAllComments);
+
+export = router;
+
diff --git a/comment-service/src/server.ts b/comment-service/src/server.ts
index e8bc68b6..89b815b9 100644
--- a/comment-service/src/server.ts
+++ b/comment-service/src/server.ts
@@ -3,7 +3,7 @@ import http from 'http';
 import mongoose from 'mongoose';
 import { config } from './config/config';
 import Logging from './library/logging';
-
+import commentRoutes from './routes/Comment'
 const router = express();
 
 //Connect to Mongo
@@ -49,6 +49,7 @@ const StartServer = () => {
     });
 
     /**ROUTES */
+    router.use('/comments', commentRoutes);
 
     /**HEALTHCHECK */
     /** Healthcheck */
-- 
GitLab