diff --git a/api/posts/posts-router.js b/api/posts/posts-router.js index d3860a5d..74f8bba6 100644 --- a/api/posts/posts-router.js +++ b/api/posts/posts-router.js @@ -1 +1,87 @@ // posts için gerekli routerları buraya yazın +const express = require("express"); +const Post = require("./posts-model"); + +const router = express.Router(); + +router.get("/", (req, res) => { + Post.find().then(posts => { + res.json(posts); + }) +}); + +router.get("/:id", (req, res) => { + Post.findById(req.param.id).then(findPost => { + if (!findPost) { + res.status(404).json({ message: "Belirtilen ID'li gönderi bulunamadı" }) + } + }); +}); +router.post("/", (req, res) => { + const { title, contents } = req.body; + if (!title || !contents) { + res.status(400).json({ message: "Lütfen gönderi için bir title ve contents sağlayın" }) + } + else { + try { + let { id } = await Post.insert({ title, contents }); + let insertedPost = await Post.findById(id); + res.status(201).json(insertedPost); + } catch (error) { + res.status(500).json({ message: "Veritabanına kaydedilirken bir hata oluştu" }); + } + } +}); +router.put("/:id", async (req, res) => { + let existPost = await Post.findById(req.params.id); + if (!existPost) { + req.status(404).json({ message: "Belirtilen ID'li gönderi bulunamadı " }); + } else { + let { title, contents } = req.body; //title:req.body.title + if (!title || !contents) { + res.status(400).json({ message: "Lütfen gönderi için title ve contents sağlayın" }); + } else { + try { + let updatedPost = await Post.update(req.params.id, req.body); + let updatedPost = await Post.findById(updatedPostId); + res.status(200).json(updatedPost); + } catch (error) { + res.status(500).json({ message: "Gönderi bilgileri güncellenemedi" }) + } + + } + } +}); +router.delete("/:id" async (req, res) => { + try { + let existPost = await Post.findById(req.params.id); + if (!existPost) { + res.status(404).json({ message: "Belirtilen ID'li gönderi bulunamadı" }); + + } + else { + await Post.remove(req.params.id); + res.status(200).json(existPost); + } + + } catch (error) { + res.status(500).json({ message: "Gönderi silinemedi" }); + + } +}); +router.get("/:id/comments", async (req, res) => { + try { + let existPost = await Post.findById(req.params.id); + if (!existPost) { + res.status(404).json({ message: "Girilen ID'li gönderi bulunamadı." }); + } else { + let comments = await Post.findPostComments(req.params.id); + res.status(200).json(comments); + } + } catch (error) { + res.status(500).json({ message: "Yorumlar bilgisi getirilemedi" }) + + } +}); + +module.exports = router; \ No newline at end of file diff --git a/api/server.js b/api/server.js index 27f012cc..07006eba 100644 --- a/api/server.js +++ b/api/server.js @@ -1,3 +1,12 @@ // server için gerekli olanları burada ayarlayın // posts router'ını buraya require edin ve bağlayın +const express = require("express"); + +const server = express(); +server.use(express.json()); + +const router = require("./posts/posts-router"); +server.use("/api/posts", router); + +module.exports = server; \ No newline at end of file