diff --git a/.gitignore b/.gitignore index 4690492..6ec1694 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ package-lock.json node_modules .env -functions \ No newline at end of file +firebase \ No newline at end of file diff --git a/package.json b/package.json index 68a8821..6242896 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ "homepage": "https://github.com/FranP-code/open-react-blog-api#readme", "dependencies": { "express": "^4.18.1", + "firebase-admin": "^10.2.0", + "nodemon": "^2.0.16", "path": "^0.12.7" } } diff --git a/src/routes/user.js b/src/routes/user.js new file mode 100644 index 0000000..2e6b48b --- /dev/null +++ b/src/routes/user.js @@ -0,0 +1,72 @@ +const express = require('express') +const router = express.Router() + +const admin = require("firebase-admin"); +const firebaseSDK = require("../firebase/firebase.json"); +const {getFirestore} = require("firebase-admin/firestore") + +admin.initializeApp({ + credential: admin.credential.cert(firebaseSDK) +}); + +const db = getFirestore() + +router.get("/", async (req, res) => { + + console.log(req.body) + + //Check if body.user has sended + if (!req.body || !req.body.user) { + res.status(400).json({message: "User not defined on the body of request"}) + return + } + + //Get user data + const user = req.body.user + + const userData = {} + + try { + const userReference = db.collection('users') + const userRequest = await userReference.where("username", "==", user).limit(1).get() + + userRequest.forEach(doc => { + userData.id = doc.id + userData.username = doc.data() + }) + } catch (err) { + console.log(err) + res.status(400).json(err) + } + + //Check if the userID is defined + if (!userData.id) { + res.status(400).json({message: "User don't found"}) + return + } + + //Get user posts + userData.posts = [] + + try { + + const postsReference = await db.collection('users').doc(userData.id).collection("posts").get() + + postsReference.forEach(doc => { + userData.posts.push({ + id: doc.id, + data: doc.data() + }) + }) + } catch (error) { + console.log(err) + res.status(400).json(err) + } + + //Hide user id + userData.id = null + + res.json(userData) +}) + +module.exports = router \ No newline at end of file diff --git a/src/server.js b/src/server.js index 69c7ad5..c2f1b71 100644 --- a/src/server.js +++ b/src/server.js @@ -3,8 +3,13 @@ const server = express() const port = 3000 +server.use(express.json()) + const index = require('./routes/index.js') server.use("/", index) +const user = require('./routes/user.js') +server.use("/user", user) + server.listen(port) console.log("Listening in the port ", port) \ No newline at end of file