diff --git a/backend/controllers/message.controller.js b/backend/controllers/message.controller.js new file mode 100644 index 0000000..94bf29a --- /dev/null +++ b/backend/controllers/message.controller.js @@ -0,0 +1,3 @@ +export const sendMessage = async (req, res) => { + console.log("message sent", req.params.id); +}; diff --git a/backend/models/conversation.model.js b/backend/models/conversation.model.js new file mode 100644 index 0000000..e58fc5a --- /dev/null +++ b/backend/models/conversation.model.js @@ -0,0 +1,24 @@ +import mongoose from "mongoose"; + +const conversationSchema = new mongoose.Schema( + { + participants: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + }, + ], + messages: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: "Message", + default: [], + }, + ], + }, + { timestamps: true } +); + +const Conversation = mongoose.model("Conversation", conversationSchema); + +export default Conversation; diff --git a/backend/models/message.model.js b/backend/models/message.model.js new file mode 100644 index 0000000..ca11ba1 --- /dev/null +++ b/backend/models/message.model.js @@ -0,0 +1,26 @@ +import mongoose from "mongoose"; + +const messageSchema = new mongoose.Schema( + { + senderId: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + required: true, + }, + receiverId: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + required: true, + }, + message: { + type: String, + required: true, + }, + }, + // createdAt, updatedAt when timestamp is true > message.createdAt, message.updatedAt + { timestamps: true } +); + +const Message = mongoose.model("Message", messageSchema); + +export default Message; diff --git a/backend/models/user.model.js b/backend/models/user.model.js index 7681846..1302170 100644 --- a/backend/models/user.model.js +++ b/backend/models/user.model.js @@ -1,30 +1,34 @@ import mongoose from "mongoose"; -const userSchema = new mongoose.Schema({ - fullName: { - type: String, - required: true, +const userSchema = new mongoose.Schema( + { + fullName: { + type: String, + required: true, + }, + username: { + type: String, + required: true, + unique: true, + }, + password: { + type: String, + required: true, + minlength: 6, + }, + gender: { + type: String, + required: true, + enum: ["male", "female"], + }, + profilePic: { + type: String, + default: "", + }, }, - username: { - type: String, - required: true, - unique: true, - }, - password: { - type: String, - required: true, - minlength: 6, - }, - gender: { - type: String, - required: true, - enum: ["male", "female"], - }, - profilePic: { - type: String, - default: "", - }, -}); + // createdAt, updatedAt when timestamp is true > user.createdAt, user.updatedAt + { timestamps: true } +); const User = mongoose.model("User", userSchema); diff --git a/backend/routes/message.routes.js b/backend/routes/message.routes.js new file mode 100644 index 0000000..6308f76 --- /dev/null +++ b/backend/routes/message.routes.js @@ -0,0 +1,8 @@ +import express from "express"; +import { sendMessage } from "../controllers/message.controller.js"; + +const router = express.Router(); + +router.post("/send/:id", sendMessage); + +export default router; diff --git a/backend/server.js b/backend/server.js index 7d442af..6f341fb 100644 --- a/backend/server.js +++ b/backend/server.js @@ -4,6 +4,7 @@ import dotenv from "dotenv"; // file imports import authRoutes from "./routes/auth.routes.js"; +import messageRoutes from "./routes/message.routes.js"; import connectToMongoDB from "./db/connectToMongoDB.js"; const app = express(); @@ -14,6 +15,7 @@ dotenv.config(); // middleware app.use(express.json()); // for parsing application/json (from req.body) app.use("/api/auth", authRoutes); +app.use("/api/messages", messageRoutes); // app.get("/", (req, res) => { // // root route http://localhost:3000