feat(api): add a route to update story views
don't worry, there are duplicate/spam checks in place
This commit is contained in:
parent
da8b960004
commit
417fda7617
28
server/api/story/[id]/set-viewed.ts
Normal file
28
server/api/story/[id]/set-viewed.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { isIdNan } from "@server/middlewareButNotReally";
|
||||||
|
import { Story } from "@models/stories";
|
||||||
|
|
||||||
|
export default eventHandler(async (ev) => {
|
||||||
|
const id = isIdNan(ev);
|
||||||
|
const ip = await getRequestIP(ev, { xForwardedFor: true });
|
||||||
|
const storage = useStorage(`/story/${id}/viewMap`);
|
||||||
|
if (ev.context.currentUser) {
|
||||||
|
if (!(await storage.hasItem(`loggedIn/${ev.context.currentUser._id}`))) {
|
||||||
|
await Story.findByIdAndUpdate(id, {
|
||||||
|
$inc: {
|
||||||
|
views: 1,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await storage.setItem(`loggedIn/${ev.context.currentUser._id}`, Date.now());
|
||||||
|
} else {
|
||||||
|
if (!(await storage.hasItem(`/loggedIn/${ip}`))) {
|
||||||
|
await Story.findByIdAndUpdate(id, {
|
||||||
|
$inc: {
|
||||||
|
views: 1,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await storage.setItem(ip, Date.now());
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user