Skip to content

Instantly share code, notes, and snippets.

@teasmade
Created May 2, 2021 08:01
Show Gist options
  • Save teasmade/46519bad8ccacb56a0cb6b3afcbe7ef7 to your computer and use it in GitHub Desktop.
Save teasmade/46519bad8ccacb56a0cb6b3afcbe7ef7 to your computer and use it in GitHub Desktop.
Express quest 4
const connection = require('./db-config');
connection.connect(function (err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected as id ' + connection.threadId);
});
// Express is already installed
const express = require('express');
const app = express();
app.use(express.json());
// Array of movies
const movies = require('./movies');
// In codesandbox we need to use the default port which is 8080
const port = 3000;
app.listen(port, () => {
console.log(`Server is running on ${port}`);
});
app.get('/', (request, response) => {
response.send('Welcome to my favourite movie list');
});
app.get('/api/movies', (request, res) => {
connection.query('SELECT * from movies', (err, results) => {
if (err) {
res.status(500).send('Error retrieving data');
} else {
res.status(200).json(results);
}
});
});
app.get('/api/movies/:id', (req, res) => {
connection.query('SELECT * from movies WHERE id=?', [req.params.id], (err, results) => {
if (err) {
console.log(err);
res.status(500).send('Error retrieving data');
} else {
res.status(200).json(results);
}
});
});
app.get('/api/search', (request, response) => {
const time = request.query.maxDuration;
connection.query('SELECT * from movies WHERE duration<=?', [time], (err, results) => {
if (err) {
console.log(err);
response.status(500).send('Error retrieving data');
} else {
response.status(200).json(results);
}
});
});
app.get('/api/users', (request, response) => {
response.status(401).send('unauthorized you naughty');
});
app.post('/api/movies', (req, res) => {
const { title, director, year, color, duration } = req.body;
connection.query(
'INSERT INTO movies(title, director, year, color, duration) VALUES (?, ?, ?, ?, ?)',
[title, director, year, color, duration],
(err, result) => {
if (err) {
res.status(500).send('Error saving the movie');
} else {
res.status(201).send('Movie successfully saved');
}
}
);
});
app.post('/api/users', (req, res) => {
const { firstname, lastname, email } = req.body;
connection.query(
'INSERT INTO users(firstname, lastname, email) VALUES (?, ?, ?)',
[firstname, lastname, email],
(err, result) => {
if (err) {
res.status(500).send('Error saving the user');
} else {
res.status(201).send('User successfully saved');
}
}
);
});
// This route will update a user in the DB
app.put('/api/users/:id', (req, res) => {
// We get the ID from the url path :
const userId = req.params.id;
// We get the new attribute values for the user from req.body
const userPropsToUpdate = req.body;
// We send a UPDATE query to the DB
connection.query('UPDATE users SET ? WHERE id = ?', [userPropsToUpdate, userId], (err) => {
// Once the DB operation is over, we can respond to the HTTP request
if (err) {
console.log(err);
res.status(500).send('Error updating a user');
} else {
res.status(200).send('User updated successfully ๐ŸŽ‰');
}
});
});
// This route will update a movie in the DB
app.put('/api/movies/:id', (req, res) => {
const movieId = req.params.id;
const moviePropsToUpdate = req.body;
connection.query('UPDATE movies SET ? WHERE id = ?', [moviePropsToUpdate, movieId], (err) => {
if (err) {
console.log(err);
res.status(500).send('Error updating a movie');
} else {
res.status(200).send('Movie updated successfully ๐ŸŽ‰');
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment