-
Notifications
You must be signed in to change notification settings - Fork 0
/
controllers.js
75 lines (67 loc) · 1.85 KB
/
controllers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { validationResult } from "express-validator";
import pool from "./db.js";
export const getUrlById = (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
error: errors.array()[0].msg,
param: errors.array()[0].param,
});
}
pool
.query("SELECT short_url, original_url FROM urls WHERE short_url = $1", [
req.params.id,
])
.then(data => {
if (data.rowCount === 0) {
return res.status(404).json({
error: "No short URL found for the given input",
});
}
if (data.rowCount > 0) {
return res.redirect(data.rows[0].original_url);
}
})
.catch(err => console.log(err));
};
export const getUrlByUrl = (req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
error: errors.array()[0].msg,
param: errors.array()[0].param,
});
}
pool
.query("SELECT short_url, original_url FROM urls WHERE original_url = $1", [
req.body.url,
])
.then(data => {
if (data.rowCount === 0) {
return next();
}
if (data.rowCount > 0) {
return res.json(data.rows[0]);
}
})
.catch(err => console.log(err));
};
export const addUrl = (req, res) => {
pool
.query("INSERT INTO urls(original_url) VALUES ($1) RETURNING *", [
req.body.url,
])
.then(data => res.status(201).json(data.rows[0]))
.catch(err => console.log(err));
};
// export const duplicateKeyErrorHandler = (err, req, res, next) => {
// if (err.code == "23505") {
// pool
// .query(
// "SELECT short_url, original_url FROM urls WHERE original_url = $1",
// [req.body.url]
// )
// .then(data => res.json(data.rows[0]))
// .catch(err => console.log(err));
// }
// };