diff --git a/src/pages/api/assignments/[id]/index.ts b/src/pages/api/assignments/[id]/index.ts index 3a85cd34..89b8ef9f 100644 --- a/src/pages/api/assignments/[id]/index.ts +++ b/src/pages/api/assignments/[id]/index.ts @@ -28,7 +28,7 @@ async function GET(req: NextApiRequest, res: NextApiResponse) { const snapshot = await db.collection("assignments").findOne({ id: id as string }); if (snapshot) { - res.status(200).json({...snapshot, id: snapshot._id}); + res.status(200).json({...snapshot, id: snapshot.id}); } } diff --git a/src/pages/api/discounts/[id].ts b/src/pages/api/discounts/[id].ts index ee3cc9c5..b32291dd 100644 --- a/src/pages/api/discounts/[id].ts +++ b/src/pages/api/discounts/[id].ts @@ -48,7 +48,7 @@ async function patch(req: NextApiRequest, res: NextApiResponse) { await db.collection("discounts").updateOne( { id: id }, - { $set: { id: id, ...req.body}, + { $set: {id: id, ...req.body} }, { upsert: true } ); diff --git a/src/pages/api/groups/[id].ts b/src/pages/api/groups/[id].ts index d47b42a7..31c7b6c7 100644 --- a/src/pages/api/groups/[id].ts +++ b/src/pages/api/groups/[id].ts @@ -97,7 +97,8 @@ async function patch(req: NextApiRequest, res: NextApiResponse) { await db.collection("grading").updateOne( { id: req.session.user.id }, - { $set: req.body} + { $set: {id: id, ...req.body} }, + { upsert: true } ); res.status(200).json({ ok: true }); diff --git a/src/pages/api/packages/[id].ts b/src/pages/api/packages/[id].ts index 151e38fa..bd9265ce 100644 --- a/src/pages/api/packages/[id].ts +++ b/src/pages/api/packages/[id].ts @@ -1,12 +1,11 @@ // Next.js API route support: https://nextjs.org/docs/api-routes/introduction import type {NextApiRequest, NextApiResponse} from "next"; -import {app} from "@/firebase"; -import {getFirestore, doc, getDoc, deleteDoc, setDoc} from "firebase/firestore"; +import client from "@/lib/mongodb"; import {withIronSessionApiRoute} from "iron-session/next"; import {sessionOptions} from "@/lib/session"; import {PERMISSIONS} from "@/constants/userPermissions"; -const db = getFirestore(app); +const db = client.db(process.env.MONGODB_DB); export default withIronSessionApiRoute(handler, sessionOptions); @@ -23,14 +22,11 @@ async function get(req: NextApiRequest, res: NextApiResponse) { } const {id} = req.query as {id: string}; + const docSnap = await db.collection("packages").findOne({ id: id}); - const docRef = doc(db, "packages", id); - const docSnap = await getDoc(docRef); - - if (docSnap.exists()) { + if (docSnap) { res.status(200).json({ - id: docSnap.id, - ...docSnap.data(), + ...docSnap, module, }); } else { @@ -46,16 +42,16 @@ async function patch(req: NextApiRequest, res: NextApiResponse) { const {id} = req.query as {id: string}; - const docRef = doc(db, "packages", id); - const docSnap = await getDoc(docRef); - - if (docSnap.exists()) { + const docSnap = await db.collection("packages").findOne({ id: id}); + if (docSnap) { if (!["developer", "admin"].includes(req.session.user.type)) { res.status(403).json({ok: false}); return; } - - await setDoc(docRef, req.body, {merge: true}); + await db.collection("packages").updateOne( + { id: id }, + { $set: req.body } + ); res.status(200).json({ok: true}); } else { @@ -71,16 +67,14 @@ async function del(req: NextApiRequest, res: NextApiResponse) { const {id} = req.query as {id: string}; - const docRef = doc(db, "packages", id); - const docSnap = await getDoc(docRef); + const docSnap = await db.collection("packages").findOne({ id: id}); - if (docSnap.exists()) { + if (docSnap) { if (!["developer", "admin"].includes(req.session.user.type)) { res.status(403).json({ok: false}); return; } - - await deleteDoc(docRef); + await db.collection("packages").deleteOne({ id: id }); res.status(200).json({ok: true}); } else { diff --git a/src/pages/api/packages/index.ts b/src/pages/api/packages/index.ts index a2424370..2c660042 100644 --- a/src/pages/api/packages/index.ts +++ b/src/pages/api/packages/index.ts @@ -1,14 +1,13 @@ // Next.js API route support: https://nextjs.org/docs/api-routes/introduction import type {NextApiRequest, NextApiResponse} from "next"; -import {app} from "@/firebase"; -import {getFirestore, collection, getDocs, setDoc, doc} from "firebase/firestore"; +import client from "@/lib/mongodb"; import {withIronSessionApiRoute} from "iron-session/next"; import {sessionOptions} from "@/lib/session"; import {Group} from "@/interfaces/user"; import {Package} from "@/interfaces/paypal"; import {v4} from "uuid"; -const db = getFirestore(app); +const db = client.db(process.env.MONGODB_DB); export default withIronSessionApiRoute(handler, sessionOptions); @@ -18,14 +17,8 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { } async function get(req: NextApiRequest, res: NextApiResponse) { - const snapshot = await getDocs(collection(db, "packages")); - - res.status(200).json( - snapshot.docs.map((doc) => ({ - id: doc.id, - ...doc.data(), - })), - ); + const snapshot = await db.collection("packages").find({}).toArray(); + res.status(200).json(snapshot); } async function post(req: NextApiRequest, res: NextApiResponse) { @@ -38,7 +31,8 @@ async function post(req: NextApiRequest, res: NextApiResponse) { return res.status(403).json({ok: false, reason: "You do not have permission to create a new package"}); const body = req.body as Package; - - await setDoc(doc(db, "packages", v4()), body); + // Package already had an id but a new one was being set + // with v4() don't know if intentional or not, recreated the behaviour as was + await db.collection("packages").insertOne({...body, id: v4()}) res.status(200).json({ok: true}); }