From 5007e48c8546d8138092039bf3cecc0b9904a407 Mon Sep 17 00:00:00 2001 From: Factiven Date: Thu, 13 Apr 2023 22:14:50 +0700 Subject: Update 4th --- pages/api/watched-episode.js | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 pages/api/watched-episode.js (limited to 'pages/api/watched-episode.js') diff --git a/pages/api/watched-episode.js b/pages/api/watched-episode.js new file mode 100644 index 0000000..271348d --- /dev/null +++ b/pages/api/watched-episode.js @@ -0,0 +1,43 @@ +// pages/api/update-user.js +import clientPromise from "../../lib/mongodb"; + +export default async function handler(req, res) { + const client = await clientPromise; + const db = client.db("authbase"); + const collection = db.collection("users"); + + const { username, id, newData } = req.body; // id is the user ID and newData is the new data you want to set + + try { + const result = await collection.updateOne( + { + name: username, + "recentWatch.id": id, + "recentWatch.episode.id": { $ne: newData.id }, + }, + { $addToSet: { "recentWatch.$.episode": newData } } + ); + + if (result.modifiedCount === 0) { + const updateResult = await collection.updateOne( + { + name: username, + "recentWatch.id": id, + "recentWatch.episode.id": newData.id, + "recentWatch.episode.time": { $ne: newData.time }, + }, + { $set: { "recentWatch.$.episode.$[elem].time": newData.time } }, + { arrayFilters: [{ "elem.id": newData.id }] } + ); + if (updateResult.modifiedCount === 0) { + console.log("The episode already exists with the same time."); + } + } + + console.log("Successfully updated the recentWatch collection."); + + res.status(200).json(result); + } catch (error) { + res.status(500).json({ error: "Unable to update user data", dat: newData }); + } +} -- cgit v1.2.3