Skip to content
Snippets Groups Projects
Commit db14661d authored by Alexander Olofsson's avatar Alexander Olofsson
Browse files

Finish up database connection

parent 8a901ca6
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
const { Pool } = require('pg'); const { Pool } = require('pg');
const config = require('../config'); const config = require('../config');
const pool = new Pool(); const pool = new Pool(config.postgres);
pool.on('error', (err) => { pool.on('error', (err) => {
console.log("DB Pool error occured;"); console.log("DB Pool error occured;");
...@@ -13,19 +13,33 @@ pool.on('error', (err) => { ...@@ -13,19 +13,33 @@ pool.on('error', (err) => {
const seed = ` const seed = `
CREATE TABLE IF NOT EXISTS external_users ( CREATE TABLE IF NOT EXISTS external_users (
id SERIAL, id SERIAL,
user_id INTEGER, user_id INTEGER NOT NULL,
owner_id INTEGER NOT NULL, owner_id INTEGER NOT NULL,
username VARCHAR(256) NOT NULL, username VARCHAR(256) NOT NULL,
date_added TIMESTAMP DEFAULT NOW() active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
); );
CREATE TABLE IF NOT EXISTS audit_events ( CREATE TABLE IF NOT EXISTS audit_events (
id SERIAL, id SERIAL,
event VARCHAR(32) NOT NULL, event VARCHAR(32) NOT NULL,
user_id INTEGER NOT NULL, user_id INTEGER NOT NULL,
message TEXT, target_id INTEGER DEFAULT NULL,
message TEXT DEFAULT NULL,
timestamp TIMESTAMP DEFAULT NOW() timestamp TIMESTAMP DEFAULT NOW()
); );
`; `;
(async () => {
const client = await pool.connect();
try {
console.log("Applying database seed.")
const res = await client.query(seed);
console.log(res);
} finally {
client.release();
}
})().catch(e => console.log(e.stack));
module.exports = pool; module.exports = pool;
...@@ -17,14 +17,20 @@ router.get('/', async (req, res) => { ...@@ -17,14 +17,20 @@ router.get('/', async (req, res) => {
console.log('GET: /users'); console.log('GET: /users');
try { try {
const { rows } = await db.query('SELECT * FROM external_users WHERE owner_id = $1', req.user.id); const queryText = 'SELECT * FROM external_users WHERE owner_id = $1';
console.log('> DB Query:');
console.log(queryText);
const dbResponse = await db.query(queryText, [req.user.id]);
console.log('> DB Response:');
console.log(dbResponse);
var rows = dbResponse.rows;
res.send(rows.map((row) => row.id));
} catch(err) { } catch(err) {
console.log("> DB Error:"); console.log("> DB Error:");
console.log(err); console.log(err);
return res.status(500).send({ 'message': "Database error occured" }); return res.status(500).send({ 'message': "Database error occured" });
} }
res.send(rows.map((row) => row.id));
}); });
router.post('/', async (req, res) => { router.post('/', async (req, res) => {
...@@ -40,54 +46,42 @@ router.post('/', async (req, res) => { ...@@ -40,54 +46,42 @@ router.post('/', async (req, res) => {
try { try {
var dbResponse = null; var dbResponse = null;
try { console.log('> REST Query:');
const queryText = 'INSERT INTO external_users(owner_id, username, date_added) VALUES($1, $2, NOW())'; console.log('POST api/v4/users');
console.log("> DB Query:");
console.log(queryText);
dbResponse = await db.query(queryText, [req.user.id, req.body.username]);
console.log("> DB Response:");
console.log(dbResponse);
} catch(err) {
console.log("> DB Error:");
console.log(err);
return res.status(500).send({ 'message': "Database error occured" });
}
const response = await axios.post('api/v4/users', req.body) const response = await axios.post('api/v4/users', req.body)
const data = response.data const data = response.data
console.log("> Response:"); console.log('> Response:');
console.log(data); console.log(data);
try { try {
const queryText = 'INSERT INTO audit_events(event, user_id, message) VALUES($1, $2, $3)'; const queryText = 'INSERT INTO external_users(owner_id, user_id, username) VALUES($1, $2, $3)';
console.log("> DB Query:"); console.log('> DB Query:');
console.log(queryText); console.log(queryText);
const auditresp = await db.query(queryText, ['user.create', req.user.id, `Created account: ${dbResponse.body.name} <${dbResponse.body.email}>, username: ${dbResponse.body.username}`]); dbResponse = await db.query(queryText, [req.user.id, data.id, req.body.username]);
console.log("> DB Response:"); console.log('> DB Response:');
console.log(auditresp); console.log(dbResponse);
} catch(err) { } catch(err) {
console.log("> DB Error:"); console.log('> DB Error:');
console.log(err); console.log(err);
return res.status(500).send({ 'message': 'Database error occured' });
} }
try { try {
const queryText = 'UPDATE external_users SET user_id = $2 WHERE id = $1'; const queryText = 'INSERT INTO audit_events(event, user_id, message) VALUES($1, $2, $3)';
console.log("> DB Query:"); console.log('> DB Query:');
console.log(queryText); console.log(queryText);
dbResponse = await db.query(queryText, [dbResponse.id, data.id]); const auditresp = await db.query(queryText, ['user.create', req.user.id, `Created account: ${dbResponse.name} <${dbResponse.email}>, username: ${dbResponse.username}`]);
console.log("> DB Response:"); console.log('> DB Response:');
console.log(dbResponse); console.log(auditresp);
} catch(err) { } catch(err) {
console.log("> DB Error:"); console.log('> DB Error:');
console.log(err); console.log(err);
return res.status(500).send({ 'message': "Database error occured" });
} }
res.send(data); res.send(data);
} catch(err) { } catch(err) {
console.log("> Error:"); console.log('> Error:');
console.log(err.response.data); console.log(err.response.data);
res.status(err.response.status).send(err.response.data); res.status(err.response.status).send(err.response.data);
} }
...@@ -97,14 +91,16 @@ router.get('/:userId', async (req, res) => { ...@@ -97,14 +91,16 @@ router.get('/:userId', async (req, res) => {
console.log('GET: /users/' + req.params.userId); console.log('GET: /users/' + req.params.userId);
try { try {
console.log('> REST Query:');
console.log('GET api/v4/users/' + req.params.userId);
const response = await axios.get('api/v4/users/' + req.params.userId) const response = await axios.get('api/v4/users/' + req.params.userId)
const data = response.data const data = response.data
console.log("> Response:"); console.log('> Response:');
console.log(data); console.log(data);
res.send(data); res.send(data);
} catch(err) { } catch(err) {
console.log("> Error:"); console.log('> Error:');
console.log(err.response.data); console.log(err.response.data);
res.status(err.response.status).send(err.response.data); res.status(err.response.status).send(err.response.data);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment