Skip to content

Commit d98748f

Browse files
committed
add users route and controller file
1 parent 804a65c commit d98748f

6 files changed

Lines changed: 147 additions & 158 deletions

File tree

backend/src/controllers/activity.controller.js

Lines changed: 3 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ const {
66
ViewHistory,
77
User,
88
} = require("../models");
9-
const COUCHDB_BASE_URL =
10-
process.env.COUCHDB_BASE_URL || "https://neurojson.org/io";
119

1210
// get or create dataset in SQL database
1311
const getOrCreateDataset = async (couch_db, ds_id) => {
@@ -120,24 +118,6 @@ const saveDataset = async (req, res) => {
120118
}
121119
};
122120

123-
// get user's saved datasets
124-
const getUserSavedDatasets = async (req, res) => {
125-
try {
126-
const user = req.user;
127-
const savedDataset = await SavedDataset.findAll({
128-
where: { user_id: user.id },
129-
include: [{ model: Dataset, as: "Dataset" }],
130-
order: [["created_at", "DESC"]],
131-
});
132-
res.status(200).json({ savedDataset });
133-
} catch (error) {
134-
console.error("Get saved datasets error:", error);
135-
res
136-
.status(500)
137-
.json({ message: "Error fetching saved datasets", error: error.message });
138-
}
139-
};
140-
141121
// unsave a dataset
142122
const unsaveDataset = async (req, res) => {
143123
try {
@@ -272,14 +252,6 @@ const updateComment = async (req, res) => {
272252
res.status(200).json({
273253
message: "Comment updated successfully",
274254
comment,
275-
// comment: {
276-
// id: comment.id,
277-
// body: comment.body,
278-
// user_id: comment.user_id,
279-
// dataset_id: comment.dataset_id,
280-
// created_at: comment.created_at,
281-
// updated_at: comment.updated_at,
282-
// },
283255
});
284256
} catch (error) {
285257
console.error("Update comment error:", error);
@@ -365,47 +337,8 @@ const trackView = async (req, res) => {
365337
}
366338
};
367339

368-
// get user's recently viewed datasets
369-
const getRecentlyViewed = async (req, res) => {
370-
try {
371-
const user = req.user;
372-
const limit = parseInt(req.query.limit) || 6;
373-
374-
const recentViews = await ViewHistory.findAll({
375-
where: { user_id: user.id },
376-
include: [
377-
{
378-
model: Dataset,
379-
attributes: ["id", "couch_db", "ds_id", "views_count"],
380-
},
381-
],
382-
order: [["viewed_at", "DESC"]],
383-
limit: limit,
384-
});
385-
386-
// map to cleaner format
387-
const datasets = recentViews.map((view) => ({
388-
couch_db: view.Dataset.couch_db,
389-
ds_id: view.Dataset.ds_id,
390-
views_count: view.Dataset.views_count,
391-
last_viewed: view.viewed_at,
392-
}));
393-
394-
res.status(200).json({
395-
recentlyViewed: datasets,
396-
datasetsCount: datasets.length,
397-
});
398-
} catch (error) {
399-
console.error("Get recently viewed error:", error);
400-
res.status(500).json({
401-
message: "Error fetching recently viewed datasets",
402-
error: error.message,
403-
});
404-
}
405-
};
406-
407340
// get most viewd datasets
408-
const getMostViewed = async (req, res) => {
341+
const getMostViewedDatasets = async (req, res) => {
409342
try {
410343
const limit = parseInt(req.query.limit) || 10;
411344
const topDatasets = await Dataset.findAll({
@@ -431,13 +364,11 @@ module.exports = {
431364
likeDataset,
432365
unlikeDataset,
433366
saveDataset,
434-
getUserSavedDatasets,
435367
unsaveDataset,
436368
addComment,
437369
getComments,
438-
deleteComment,
439370
updateComment,
371+
deleteComment,
440372
trackView,
441-
getRecentlyViewed,
442-
getMostViewed,
373+
getMostViewedDatasets,
443374
};
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
const {
2+
Dataset,
3+
DatasetLike,
4+
SavedDataset,
5+
Comment,
6+
ViewHistory,
7+
User,
8+
} = require("../models");
9+
const { likeDataset } = require("./activity.controller");
10+
11+
// get user's liked datasets
12+
const getUserLikedDatasets = async (req, res) => {
13+
try {
14+
const user = req.user;
15+
const likeDataset = await DatasetLike.findAll({
16+
where: { user_id: user.id },
17+
include: [{ model: Dataset }],
18+
order: [["created_at", "DESC"]],
19+
});
20+
21+
res.status(200).json({ likeDataset });
22+
} catch (error) {
23+
console.error("Get liked datasets error:", error);
24+
res
25+
.status(500)
26+
.json({ message: "Error fetching liked datasets", error: error.message });
27+
}
28+
};
29+
30+
// get user's saved datasets
31+
const getUserSavedDatasets = async (req, res) => {
32+
try {
33+
const user = req.user;
34+
const savedDataset = await SavedDataset.findAll({
35+
where: { user_id: user.id },
36+
include: [{ model: Dataset, as: "Dataset" }],
37+
order: [["created_at", "DESC"]],
38+
});
39+
res.status(200).json({ savedDataset });
40+
} catch (error) {
41+
console.error("Get saved datasets error:", error);
42+
res
43+
.status(500)
44+
.json({ message: "Error fetching saved datasets", error: error.message });
45+
}
46+
};
47+
48+
// get user's comments
49+
const getUserComments = async (req, res) => {
50+
try {
51+
const user = req.user;
52+
const comments = await Comment.findAll({
53+
where: { user_id: user.id },
54+
include: [{ model: Dataset, as: "Dataset" }],
55+
order: [["created_at", "DESC"]],
56+
});
57+
58+
res.status(200).json({ comments });
59+
} catch (error) {
60+
console.error("Get user comments error:", error);
61+
res
62+
.status(500)
63+
.json({ message: "Error fetching user comments", error: error.message });
64+
}
65+
};
66+
67+
// get user's recently viewed datasets
68+
const getUserRecentlyViewed = async (req, res) => {
69+
try {
70+
const user = req.user;
71+
const limit = parseInt(req.query.limit) || 6;
72+
73+
const recentViews = await ViewHistory.findAll({
74+
where: { user_id: user.id },
75+
include: [
76+
{
77+
model: Dataset,
78+
attributes: ["id", "couch_db", "ds_id", "views_count"],
79+
},
80+
],
81+
order: [["viewed_at", "DESC"]],
82+
limit: limit,
83+
});
84+
85+
// map to cleaner format
86+
// const datasets = recentViews.map((view) => ({
87+
// dbName: view.Dataset.couch_db,
88+
// datasetId: view.Dataset.ds_id,
89+
// views_count: view.Dataset.views_count,
90+
// last_viewed: view.viewed_at,
91+
// }));
92+
93+
res.status(200).json({
94+
recentViews,
95+
datasetsCount: recentViews.length,
96+
// recentlyViewed: datasets,
97+
});
98+
} catch (error) {
99+
console.error("Get recently viewed error:", error);
100+
res.status(500).json({
101+
message: "Error fetching recently viewed datasets",
102+
error: error.message,
103+
});
104+
}
105+
};
106+
107+
module.exports = {
108+
getUserLikedDatasets,
109+
getUserSavedDatasets,
110+
getUserComments,
111+
getUserRecentlyViewed,
112+
};

backend/src/routes/activities.routes.js

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,39 @@
22
const express = require("express");
33
const {
44
likeDataset,
5-
// unlikeDataset,
6-
// saveDataset,
7-
// unsaveDataset,
8-
// addComment,
9-
// getComments,
10-
// deleteComment,
11-
// updateComment,
12-
// trackView,
13-
// getMostViewedDatasets,
5+
unlikeDataset,
6+
saveDataset,
7+
unsaveDataset,
8+
addComment,
9+
getComments,
10+
updateComment,
11+
deleteComment,
12+
trackView,
13+
getMostViewedDatasets,
1414
} = require("../controllers/activity.controller");
1515
const { restoreUser, requireAuth } = require("../middleware/auth.middleware");
1616

1717
const router = express.Router();
1818

19-
// // Apply restoreUser to all routes
19+
// Apply restoreUser to all routes
2020
router.use(restoreUser);
2121

22-
// // Like/Unlike routes (require authentication)
22+
// Like/Unlike routes (require authentication)
2323
router.post("/datasets/:dbName/:datasetId/like", requireAuth, likeDataset);
24-
// router.delete("/datasets/:dbName/:datasetId/like", requireAuth, unlikeDataset);
24+
router.delete("/datasets/:dbName/:datasetId/like", requireAuth, unlikeDataset);
2525

26-
// // Save/Unsave routes (require authentication)
27-
// router.post("/datasets/:dbName/:datasetId/save", requireAuth, saveDataset);
28-
// router.delete("/datasets/:dbName/:datasetId/save", requireAuth, unsaveDataset);
26+
// Save/Unsave routes (require authentication)
27+
router.post("/datasets/:dbName/:datasetId/save", requireAuth, saveDataset);
28+
router.delete("/datasets/:dbName/:datasetId/save", requireAuth, unsaveDataset);
2929

30-
// // Comment routes
31-
// router.post("/datasets/:dbName/:datasetId/comments", requireAuth, addComment);
32-
// router.get("/datasets/:dbName/:datasetId/comments", getComments); // Public
33-
// router.put(
34-
// "/datasets/:dbName/:datasetId/comments/:commentId",
35-
// requireAuth,
36-
// updateComment
37-
// );
38-
// router.delete(
39-
// "/datasets/:dbName/:datasetId/comments/:commentId",
40-
// requireAuth,
41-
// deleteComment
42-
// );
30+
// Comment routes
31+
router.post("/datasets/:dbName/:datasetId/comments", requireAuth, addComment);
32+
router.get("/datasets/:dbName/:datasetId/comments", getComments); // Public
33+
router.put("/comments/:commentId", requireAuth, updateComment);
34+
router.delete("/comments/:commentId", requireAuth, deleteComment);
4335

44-
// // View tracking
45-
// router.post("/datasets/:dbName/:datasetId/views", requireAuth, trackView);
46-
// router.get("/datasets/most-viewed", getMostViewedDatasets); // Public
36+
// View tracking
37+
router.post("/datasets/:dbName/:datasetId/views", requireAuth, trackView);
38+
router.get("/datasets/most-viewed", getMostViewedDatasets); // Public
4739

4840
module.exports = router;

backend/src/routes/dataset.routes.js

Lines changed: 0 additions & 44 deletions
This file was deleted.

backend/src/routes/users.routes.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
// request send to postgres
22
const express = require("express");
33
const {
4+
getUserLikedDatasets,
45
getUserSavedDatasets,
5-
// getUserLikedDatasets,
6-
// getUserComments,
7-
// getUserRecentlyViewed,
8-
} = require("../controllers/dataset.controller");
6+
getUserComments,
7+
getUserRecentlyViewed,
8+
} = require("../controllers/user.controller");
99
const { restoreUser, requireAuth } = require("../middleware/auth.middleware");
1010

1111
const router = express.Router();
@@ -15,9 +15,9 @@ router.use(restoreUser);
1515
router.use(requireAuth);
1616

1717
// User collections
18+
router.get("/me/liked-datasets", getUserLikedDatasets);
1819
router.get("/me/saved-datasets", getUserSavedDatasets);
19-
// router.get("/me/liked-datasets", getUserLikedDatasets);
20-
// router.get("/me/comments", getUserComments);
21-
// router.get("/me/recently-viewed", getUserRecentlyViewed);
20+
router.get("/me/comments", getUserComments);
21+
router.get("/me/recently-viewed", getUserRecentlyViewed);
2222

2323
module.exports = router;

backend/src/server.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ const { connectDatabase, sequelize } = require("./config/database");
66
const { restoreUser } = require("./middleware/auth.middleware");
77

88
const authRoutes = require("./routes/auth.routes");
9-
// const userRoutes = require("./routes/users.routes");
9+
const userRoutes = require("./routes/users.routes");
1010
const activitiesRoutes = require("./routes/activities.routes");
1111
const dbsRoutes = require("./routes/dbs.routes");
1212
const datasetsRoutes = require("./routes/datasets.routes");
13-
// const datasetRoutes = require("./routes/dataset.routes");
1413

1514
const app = express();
1615
const PORT = process.env.PORT || 5000;
@@ -31,11 +30,10 @@ app.use(restoreUser);
3130

3231
// Routes
3332
app.use("/api/v1/auth", authRoutes);
34-
// app.use("/api/v1/users", userRoutes);
33+
app.use("/api/v1/users", userRoutes);
3534
app.use("/api/v1/activities", activitiesRoutes);
3635
app.use("/api/v1/dbs", dbsRoutes);
3736
app.use("/api/v1/datasets", datasetsRoutes);
38-
// app.use("/api/datasets", datasetRoutes);
3937

4038
// health check endpoint
4139
app.get("/api/health", async (req, res) => {

0 commit comments

Comments
 (0)