diff --git a/functions/handlers/topic.js b/functions/handlers/topic.js index bac0322..498cd18 100644 --- a/functions/handlers/topic.js +++ b/functions/handlers/topic.js @@ -1,5 +1,5 @@ /* eslint-disable promise/always-return */ -const admin = require('firebase-admin'); +const { admin, db } = require("../util/admin"); exports.putTopic = (req, res) => { const newTopic = { @@ -9,6 +9,7 @@ exports.putTopic = (req, res) => { admin.firestore().collection('topics').add(newTopic) .then((doc) => { const resTopic = newTopic; + newTopic.topicId = doc.id; return res.status(200).json(resTopic); }) .catch((err) => { @@ -17,8 +18,6 @@ exports.putTopic = (req, res) => { }); }; - - exports.getAllTopics = (req, res) => { admin.firestore().collection('topics').get() .then((data) => { @@ -30,6 +29,25 @@ exports.getAllTopics = (req, res) => { }) .catch((err) => { console.error(err); - return res.status(500).json({error: 'Failed to fetch all posts written by specific user.'}) + return res.status(500).json({error: 'Failed to fetch all topics.'}) }) -}; \ No newline at end of file +}; + +exports.deleteTopic = (req, res) => { + // TODO: handle add and delete by topic id + const topic = db.doc(`/topics/${req.params.topicId}`); + topic.get().then((doc) => { + if (!doc.exists) { + return res.status(404).json({error: 'Topic not found'}); + } else { + return topic.delete(); + } + }) + .then(() => { + res.json({ message: 'Topic successfully deleted!'}); + }) + .catch((err) => { + console.error(err); + return res.status(500).json({error: 'Failed to delete topic.'}) + }) +} \ No newline at end of file diff --git a/functions/index.js b/functions/index.js index 737d44f..3be20a4 100644 --- a/functions/index.js +++ b/functions/index.js @@ -55,7 +55,10 @@ app.post("/putPost", fbAuth, putPost); /*------------------------------------------------------------------* * handlers/topic.js * *------------------------------------------------------------------*/ -const { putTopic, getAllTopics +const { + putTopic, + getAllTopics, + deleteTopic } = require("./handlers/topic"); // add topic to database @@ -64,4 +67,7 @@ app.post("/putTopic", fbAuth, putTopic); // get all topics from database app.get("/getAllTopics", fbAuth, getAllTopics); +// delete a specific topic +app.delete("/deleteTopic/:topicId", fbAuth, deleteTopic); + exports.api = functions.https.onRequest(app);