diff --git a/src/routers/books.js b/src/routers/books.js index 1551dd87..4c5c2932 100644 --- a/src/routers/books.js +++ b/src/routers/books.js @@ -1,9 +1,47 @@ -const express = require('express') -const router = express.Router() +const express = require("express"); +const router = express.Router(); const db = require("../../db"); -router.get('/', async (req, res) => { +router.get("/", async (req, res) => { + const books = await db.query("SELECT * FROM books"); + res.json({ books: books.rows }); +}); -}) +router.get("/:id", async (req, res) => { + const { id } = req.params; + const result = await db.query("SELECT * FROM books WHERE id = $1", [id]); + res.json({ book: result.rows[0] }); +}); -module.exports = router +router.post("/", async (req, res) => { + const { title, type, author, topic, publication_date, pages } = req.body; + + const newBook = await db.query( + "INSERT INTO books ( title ,type , author , topic , publication_date , pages ) VALUES ( $1 , $2 , $3 , $4 , $5 , $6 ) RETURNING *", + [title, type, author, topic, publication_date, pages] + ); + + res.status(201).json({ book: newBook.rows[0] }); +}); + +router.put("/:id", async (req, res) => { + const { id } = req.params; + const { title, type, author, topic, publication_date, pages } = req.body; + + const result = await db.query( + "UPDATE books SET title = $2,type = $3, author = $4,topic = $5 , publication_date = $6,pages = $7 WHERE id = $1 RETURNING *", + [id, title, type, author, topic, publication_date, pages] + ); + res.status(201).json({ book: result.rows[0] }); +}); + +router.delete("/:id", async (req, res) => { + const { id } = req.params; + const deleteBook = await db.query( + "DELETE FROM books WHERE id = $1 RETURNING *", + [id] + ); + res.status(201).json({ book: deleteBook.rows[0] }); +}); + +module.exports = router; diff --git a/src/routers/pets.js b/src/routers/pets.js new file mode 100644 index 00000000..093656c0 --- /dev/null +++ b/src/routers/pets.js @@ -0,0 +1,48 @@ +const express = require("express"); +const router = express.Router(); +const db = require("../../db"); + +router.get("/", async (req, res) => { + const pets = await db.query("SELECT * FROM pets"); + res.json({ pets: pets.rows }); +}); + +router.get("/:id", async (req, res) => { + const { id } = req.params; + const result = await db.query("SELECT * FROM pets WHERE id = $1", [id]); + res.json({ pet: result.rows[0] }); +}); + +router.post("/", async (req, res) => { + const { name, age, type, breed, has_microchip } = req.body; + + const newpet = await db.query( + "INSERT INTO pets (name, age, type, breed, has_microchip) VALUES ($1, $2, $3, $4, $5) RETURNING *", + [name, age, type, breed, has_microchip] + ); + res.status(201).json({ pet: newpet.rows[0] }); +}); + +router.put("/:id", async (req, res) => { + const { id } = req.params; + const { name, age, type, breed, has_microchip } = req.body; + + const updatedpet = await db.query( + "UPDATE pets SET name = $2, age = $3, type = $4, breed = $5, has_microchip = $6 WHERE id = $1 RETURNING *", + [id, name, age, type, breed, has_microchip] + ); + + res.status(201).json({ pet: updatedpet.rows[0] }); +}); + +router.delete("/:id", async (req, res) => { + const { id } = req.params; + + const deletedpet = await db.query( + "DELETE FROM pets WHERE id = $1 RETURNING *", + [id] + ); + + res.status(201).json({ pet: deletedpet.rows[0] }); +}); +module.exports = router; diff --git a/src/server.js b/src/server.js index dac55e5d..2ea464a7 100644 --- a/src/server.js +++ b/src/server.js @@ -10,7 +10,11 @@ app.use(express.json()); //TODO: Implement books and pets APIs using Express Modular Routers const booksRouter = require('./routers/books.js') +const petsRouter = require('./routers/pets.js') app.use('/books', booksRouter) +app.use('/pets', petsRouter) + + module.exports = app