import type { RequestHandler } from "./$types"; function secondsUntilEndOfDay() { const now = new Date(); const endOfDay = new Date( now.getFullYear(), now.getMonth(), now.getDate() + 1, ); const secondsUntilEndOfDay = (endOfDay - now) / 1000; return secondsUntilEndOfDay; } export const POST = (async ({ request, cookies, locals }) => { let output = "error"; const data = await request.json(); const sentiment = data?.sentiment; const ticker = data?.ticker; const sentimentId = data?.sentimentId; const maxAge = secondsUntilEndOfDay(); let newData; if (cookies?.get("community-sentiment-" + ticker)) { //console.log('already voted') return new Response(JSON.stringify(output)); } else { try { if (sentimentId) { if (sentiment === "upvote") { await locals?.pb ?.collection("sentiment") .update(sentimentId, { "upvote+": 1 }); } else if (sentiment === "downvote") { await locals?.pb ?.collection("sentiment") .update(sentimentId, { "downvote+": 1 }); } } else { if (sentiment === "upvote") { newData = await locals?.pb ?.collection("sentiment") .create({ ticker: ticker, upvote: 1 }); } else if (sentiment === "downvote") { newData = await locals?.pb ?.collection("sentiment") .create({ ticker: ticker, downvote: 1 }); } } output = "success"; cookies.set("community-sentiment-" + ticker, sentiment, { httpOnly: true, sameSite: "lax", secure: true, path: "/", maxAge: maxAge, // End of day expiry }); } catch (e) { console.log(e); } } return new Response(JSON.stringify(output)); }) satisfies RequestHandler;