diff --git a/server/db.js b/server/db.js index 511b089f16aa9c972f75cc14c7207d160aae94db..62bc8305e0ddbcad735c5d432fedcd3b7b396c76 100644 --- a/server/db.js +++ b/server/db.js @@ -3,7 +3,7 @@ const { Pool } = require('pg'); const config = require('../config'); -const pool = new Pool(); +const pool = new Pool(config.postgres); pool.on('error', (err) => { console.log("DB Pool error occured;"); @@ -13,19 +13,33 @@ pool.on('error', (err) => { const seed = ` CREATE TABLE IF NOT EXISTS external_users ( id SERIAL, - user_id INTEGER, + user_id INTEGER NOT NULL, owner_id INTEGER 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 ( id SERIAL, event VARCHAR(32) NOT NULL, user_id INTEGER NOT NULL, - message TEXT, + target_id INTEGER DEFAULT NULL, + message TEXT DEFAULT NULL, 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; diff --git a/server/users.js b/server/users.js index 8d0ba76859ede96f04659ba9d6684b083c25ec0f..533d985250926f1c14fe3f4c96f052880e8bec91 100644 --- a/server/users.js +++ b/server/users.js @@ -17,14 +17,20 @@ router.get('/', async (req, res) => { console.log('GET: /users'); 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) { console.log("> DB Error:"); console.log(err); return res.status(500).send({ 'message': "Database error occured" }); } - - res.send(rows.map((row) => row.id)); }); router.post('/', async (req, res) => { @@ -40,54 +46,42 @@ router.post('/', async (req, res) => { try { var dbResponse = null; - try { - const queryText = 'INSERT INTO external_users(owner_id, username, date_added) VALUES($1, $2, NOW())'; - 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" }); - } - + console.log('> REST Query:'); + console.log('POST api/v4/users'); const response = await axios.post('api/v4/users', req.body) const data = response.data - console.log("> Response:"); + console.log('> Response:'); console.log(data); try { - const queryText = 'INSERT INTO audit_events(event, user_id, message) VALUES($1, $2, $3)'; - console.log("> DB Query:"); + const queryText = 'INSERT INTO external_users(owner_id, user_id, username) VALUES($1, $2, $3)'; + console.log('> DB Query:'); 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}`]); - console.log("> DB Response:"); - console.log(auditresp); + dbResponse = await db.query(queryText, [req.user.id, data.id, req.body.username]); + console.log('> DB Response:'); + console.log(dbResponse); } catch(err) { - console.log("> DB Error:"); + console.log('> DB Error:'); console.log(err); + + return res.status(500).send({ 'message': 'Database error occured' }); } try { - const queryText = 'UPDATE external_users SET user_id = $2 WHERE id = $1'; - console.log("> DB Query:"); + const queryText = 'INSERT INTO audit_events(event, user_id, message) VALUES($1, $2, $3)'; + console.log('> DB Query:'); console.log(queryText); - dbResponse = await db.query(queryText, [dbResponse.id, data.id]); - console.log("> DB Response:"); - console.log(dbResponse); + 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(auditresp); } catch(err) { - console.log("> DB Error:"); + console.log('> DB Error:'); console.log(err); - - return res.status(500).send({ 'message': "Database error occured" }); } res.send(data); } catch(err) { - console.log("> Error:"); + console.log('> Error:'); console.log(err.response.data); res.status(err.response.status).send(err.response.data); } @@ -97,14 +91,16 @@ router.get('/:userId', async (req, res) => { console.log('GET: /users/' + req.params.userId); 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 data = response.data - console.log("> Response:"); + console.log('> Response:'); console.log(data); res.send(data); } catch(err) { - console.log("> Error:"); + console.log('> Error:'); console.log(err.response.data); res.status(err.response.status).send(err.response.data); }