diff --git a/server/api/user/me/subscriptions.put.ts b/server/api/user/me/subscriptions.put.ts new file mode 100644 index 0000000..0a6eec2 --- /dev/null +++ b/server/api/user/me/subscriptions.put.ts @@ -0,0 +1,43 @@ +import { SubPayload } from "~/lib/client/types/form/favSub"; +import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; +import { User } from "~/models/user"; + +export default eventHandler(async (ev) => { + isLoggedIn(ev); + // note: debounced batched update + const body = await readBody(ev); + await User.findByIdAndUpdate(ev.context.currentUser!._id, { + $pull: { + "subscriptions.authors": { + $in: body.pull.authors, + }, + "subscriptions.bands": { + $in: body.pull.bands, + }, + "subscriptions.stories": { + $in: body.pull.stories, + }, + }, + }); + const nu = await User.findByIdAndUpdate( + ev.context.currentUser!._id, + { + $addToSet: { + "subscriptions.authors": { + $each: body.pull.authors, + }, + "subscriptions.bands": { + $each: body.pull.bands, + }, + "subscriptions.stories": { + $each: body.pull.stories, + }, + }, + }, + { new: true }, + ); + return { + success: true, + data: nu?.subscriptions, + }; +});