Skip to content

Commit

Permalink
Make backend routes for Catelog (#27)
Browse files Browse the repository at this point in the history
* created catalog.js, made progress

* added :id to the router functions, changed delete query

* Completed code for routes. Running into db.query is not a function error

* Completed Routes for Catelog

* removed comments, fixed yarn lock

* removed console logs

* fixed ?

Co-authored-by: liannejl <[email protected]>

---------

Co-authored-by: Alyssia Tan <[email protected]>
Co-authored-by: liannejl <[email protected]>
Co-authored-by: liannejl <[email protected]>
  • Loading branch information
4 people authored Dec 18, 2023
1 parent 15d3d25 commit a2965f7
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 23 deletions.
4 changes: 4 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ const users = require('./routes/users');

const app = express();

const catalogRouter = require('./routes/catalog');

const PORT = process.env.PORT || 3001;

app.use(
Expand All @@ -20,6 +22,8 @@ app.use(
app.use(express.json()); // for req.body
app.use('/users', users);

app.use('/catalog', catalogRouter);

app.listen(PORT, () => {
console.log(`Server listening on ${PORT}`);
});
92 changes: 92 additions & 0 deletions routes/catalog.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
const express = require('express');

const { db } = require('../server/db');

const catalogRouter = express.Router();
const { keysToCamel } = require('../common/utils');

// -- GET - Returns all data from the catalog table
catalogRouter.get('/', async (req, res) => {
try {
const allInfo = await db.query(`SELECT * from catalog;`);
res.status(200).json(keysToCamel(allInfo));
} catch (err) {
res.status(500).send(err.message);
}
});

// -- GET/:id - Returns the row that matches the id
catalogRouter.get('/:id', async (req, res) => {
try {
const { id } = req.params;
const allUsers = await db.query(`SELECT * FROM catalog WHERE id = $1;`, [id]);
res.status(200).json(keysToCamel(allUsers));
} catch (err) {
res.status(500).send(err.message);
}
});

// -- POST - Adds a new row to the catalog table
catalogRouter.post('/', async (req, res) => {
const { id, host, title, eventType, subject, description, year } = req.body;
try {
await db.query(
`INSERT INTO catalog (id, host, title, event_type, subject, description, year)
VALUES ($1, $2, $3, $4, $5, $6, $7);`,
[id, host, title, eventType, subject, description, year],
);
res.status(201).json({ id, status: 'Success' });
} catch (err) {
res.status(500).json({
status: 'Failed',
msg: err.message,
});
}
});

// -- PUT - Updates an existing row given an id
// -- All fields are optional
catalogRouter.put('/:id', async (req, res) => {
try {
const { id } = req.params;
const { host, title, eventType, subject, description, year } = req.body;

const updatedCatalog = await db.query(
`UPDATE catalog SET
${host ? 'host = $(host), ' : ''}
${title ? 'title = $(title),' : ''}
${eventType ? 'event_type = $(eventType), ' : ''}
${subject ? 'subject = $(subject), ' : ''}
${description ? 'description = $(description), ' : ''}
${year ? 'year = $(year), ' : ''}
id = '${id}'
WHERE id = '${id}'
RETURNING *;`,
{
host,
title,
eventType,
subject,
description,
year,
id,
},
);
res.status(200).send(keysToCamel(updatedCatalog));
} catch (err) {
res.status(500).send(err.message);
}
});

// -- DELETE - deletes an existing row given an id
catalogRouter.delete('/:id', async (req, res) => {
try {
const { id } = req.params;
const delUser = await db.query(`DELETE FROM catalog WHERE id = $1 RETURNING *;`, [id]);
res.status(200).send(keysToCamel(delUser));
} catch (err) {
res.status(500).send(err.message);
}
});

module.exports = catalogRouter;
22 changes: 0 additions & 22 deletions server/queries/catalog.sql

This file was deleted.

2 changes: 1 addition & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2497,4 +2497,4 @@ yallist@^4.0.0:
yaml@^1.10.0:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==

0 comments on commit a2965f7

Please sign in to comment.