Skip to content

Commit 1a77216

Browse files
committed
modify track views controller
1 parent d98748f commit 1a77216

3 files changed

Lines changed: 41 additions & 32 deletions

File tree

backend/src/controllers/activity.controller.js

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -295,38 +295,56 @@ const deleteComment = async (req, res) => {
295295
}
296296
};
297297

298-
// track view
298+
// function1: increment view count
299+
const incrementViewCount = async (dbName, datasetId) => {
300+
const dataset = await getOrCreateDataset(dbName, datasetId);
301+
dataset.views_count = (dataset.views_count || 0) + 1;
302+
await dataset.save();
303+
return dataset;
304+
};
305+
306+
// function2: add or update a viewed history
307+
const trackUserHistory = async (userId, datasetId) => {
308+
const existingView = await ViewHistory.findOne({
309+
where: {
310+
user_id: userId,
311+
dataset_id: datasetId,
312+
},
313+
});
314+
315+
if (existingView) {
316+
existingView.viewed_at = new Date();
317+
await existingView.save();
318+
return { isNew: false };
319+
} else {
320+
// create new record
321+
await ViewHistory.create({
322+
user_id: userId,
323+
dataset_id: datasetId,
324+
});
325+
return { isNew: true };
326+
}
327+
};
328+
329+
// combined function1+2
299330
const trackView = async (req, res) => {
300331
try {
301332
const user = req.user;
302333
const { dbName, datasetId } = req.params;
303-
const dataset = await getOrCreateDataset(dbName, datasetId);
304-
// Increment view count
305-
dataset.views_count = (dataset.views_count || 0) + 1;
306-
await dataset.save();
334+
const dataset = await incrementViewCount(dbName, datasetId);
307335

308-
// check if user has viewed this dataset before
309-
const existingView = await ViewHistory.findOne({
310-
where: {
311-
user_id: user.id,
312-
dataset_id: dataset.id,
313-
},
314-
});
315-
316-
if (existingView) {
317-
existingView.viewed_at = new Date();
318-
await existingView.save();
319-
} else {
320-
await ViewHistory.create({
321-
user_id: user.id,
322-
dataset_id: dataset.id,
323-
});
336+
// track personal history
337+
let historyResult = null;
338+
if (user) {
339+
historyResult = await trackUserHistory(user.id, dataset.id);
324340
}
325341

326342
res.status(200).json({
327343
message: "View tracked successfully",
328344
viewCount: dataset.views_count,
329-
isNewView: !existingView,
345+
personalHistoryTracked: !!historyResult,
346+
isNewView: historyResult?.isNew,
347+
isAuthenticated: !!user,
330348
});
331349
} catch (error) {
332350
console.error("Track view error:", error);

backend/src/controllers/user.controller.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,9 @@ const getUserRecentlyViewed = async (req, res) => {
8282
limit: limit,
8383
});
8484

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-
9385
res.status(200).json({
9486
recentViews,
9587
datasetsCount: recentViews.length,
96-
// recentlyViewed: datasets,
9788
});
9889
} catch (error) {
9990
console.error("Get recently viewed error:", error);

backend/src/routes/activities.routes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ router.put("/comments/:commentId", requireAuth, updateComment);
3434
router.delete("/comments/:commentId", requireAuth, deleteComment);
3535

3636
// View tracking
37-
router.post("/datasets/:dbName/:datasetId/views", requireAuth, trackView);
37+
router.post("/datasets/:dbName/:datasetId/views", trackView); // Public
3838
router.get("/datasets/most-viewed", getMostViewedDatasets); // Public
3939

4040
module.exports = router;

0 commit comments

Comments
 (0)