Skip to content

Commit a47ed36

Browse files
committed
Fix the endpoints
1 parent d5b2233 commit a47ed36

File tree

6 files changed

+115
-15
lines changed

6 files changed

+115
-15
lines changed
Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,66 @@
1-
export async function create_room(req, res) {
2-
// this function is to create a connection between two users
3-
// the connection is store in mongodb
1+
import { createRoom, get_roomID, heartbeat, get_all_rooms } from '../model/repository.js';
2+
import crypto from 'crypto';
43

4+
// Create a room between two users
5+
export async function create_room(req, res) {
56
const { user1, user2 } = req.body;
67

7-
}
8+
if (!user1 || !user2) {
9+
return res.status(400).json({ error: 'Both user1 and user2 are required' });
10+
}
11+
12+
// Generate a unique room ID by hashing the two user IDs
13+
const roomId = crypto.createHash('sha256').update(user1 + user2).digest('hex');
14+
const room = await createRoom(user1, user2, roomId);
15+
16+
if (room) {
17+
res.status(201).json(room);
18+
} else {
19+
res.status(500).json({ error: 'Failed to create room' });
20+
}
21+
}
22+
23+
// Get room ID by user
24+
export async function get_room_by_user(req, res) {
25+
const { user } = req.params;
26+
27+
if (!user) {
28+
return res.status(400).json({ error: 'User is required' });
29+
}
30+
31+
const room = await get_roomID(user);
32+
33+
if (room) {
34+
res.status(200).json(room);
35+
} else {
36+
res.status(404).json({ error: `Room not found for user: ${user}` });
37+
}
38+
}
39+
40+
// Update heartbeat for a room
41+
export async function update_heartbeat(req, res) {
42+
const { roomId } = req.params;
43+
44+
if (!roomId) {
45+
return res.status(400).json({ error: 'Room ID is required' });
46+
}
47+
48+
const updatedRoom = await heartbeat(roomId);
49+
50+
if (updatedRoom) {
51+
res.status(200).json(updatedRoom);
52+
} else {
53+
res.status(404).json({ error: `Room with ID ${roomId} not found` });
54+
}
55+
}
56+
57+
// Get all rooms
58+
export async function get_all_rooms_controller(req, res) {
59+
const rooms = await get_all_rooms();
60+
61+
if (rooms) {
62+
res.status(200).json(rooms);
63+
} else {
64+
res.status(500).json({ error: 'Failed to retrieve rooms' });
65+
}
66+
}

collab-service/app/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ app.use((req, res, next) => {
3030
});
3131

3232

33+
app.use("/collab", collabRoutes);
34+
35+
3336
app.get("/", (req, res, next) => {
3437
console.log("Sending Greetings!");
3538
res.json({
@@ -53,6 +56,5 @@ app.use((error, req, res, next) => {
5356
});
5457
});
5558

56-
app.use("/collab", collabRoutes);
5759

5860
export default app;

collab-service/app/model/repository.js

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { connect } from 'mongoose';
2-
import UsersSession from './usersSession-model';
3-
import mongoose from 'mongoose';
2+
import UsersSession from "./usersSession-model.js";
43

54
export async function connectToMongo() {
65
await connect('mongodb+srv://admin:[email protected]/');
@@ -30,4 +29,26 @@ export async function get_roomID(user) {
3029
console.error('Error finding room for ${user}:', error);
3130
return null;
3231
}
32+
}
33+
34+
export async function heartbeat(roomId) {
35+
try {
36+
const room = await UsersSession.findOne({ roomId: roomId });
37+
room.lastUpdated = new Date();
38+
await room.save();
39+
return room;
40+
} catch (error) {
41+
console.error('Error updating room ${roomId}:', error);
42+
return null;
43+
}
44+
}
45+
46+
export async function get_all_rooms() {
47+
try {
48+
const rooms = await UsersSession.find({});
49+
return rooms;
50+
} catch (error) {
51+
console.error('Error getting all rooms:', error);
52+
return null;
53+
}
3354
}
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
import express from "express";
2-
3-
import { create_room } from "../controller/collab-controller.js";
2+
import {
3+
create_room,
4+
get_room_by_user,
5+
update_heartbeat,
6+
get_all_rooms_controller
7+
} from "../controller/collab-controller.js";
48

59
const router = express.Router();
610

711
router.post("/create-room", create_room);
812

9-
export default router;
13+
router.get("/user/:user", get_room_by_user);
14+
15+
router.patch("/heartbeat/:roomId", update_heartbeat);
16+
17+
router.get("/rooms", get_all_rooms_controller);
18+
19+
export default router;

collab-service/app/server.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,12 @@ import { connectToMongo } from "./model/repository.js";
22
import http from "http";
33
import index from "./index.js";
44
const PORT = process.env.PORT || 5000;
5-
const server = http.createServer(index);
5+
const server = http.createServer(index);
6+
7+
connectToMongo().then(() => {
8+
server.listen(PORT, () => {
9+
console.log(`Server running on http://localhost:${PORT}`);
10+
});
11+
}).catch((error) => {
12+
console.error("Error connecting to MongoDB:", error);
13+
});

collab-service/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
"name": "collab-service",
33
"version": "1.0.0",
44
"description": "",
5-
"main": "app/index.js",
5+
"main": "app/server.js",
66
"type": "module",
77
"scripts": {
8-
"dev": "nodemon -L app/index.js",
9-
"start": "node app/index.js",
8+
"dev": "nodemon -L app/server.js",
9+
"start": "node app/server.js",
1010
"test": "echo \"Error: no test specified\" && exit 1"
1111
},
1212
"keywords": [],
@@ -20,4 +20,4 @@
2020
"devDependencies": {
2121
"nodemon": "^3.1.4"
2222
}
23-
}
23+
}

0 commit comments

Comments
 (0)