const { Pool } = require("pg");
// Queries
const get_user_query = "SELECT * FROM user_info WHERE user_key = $1";
const save_user_query = "INSERT INTO user_info VALUES($1, $2) RETURNING user_key";
const save_activity_log = "INSERT INTO activity_files VALUES($1, $2, $3, $4) RETURNING fit_id"
const delete_user_query = "DELETE FROM user_info WHERE user_key = $1;";
/**
* Pool = hergenbruiken van service
* Maak een pool met de gegevens van de database.
*/
const pool = new Pool({
user: "postgres",
host: "vps.b60b7781f5.hostnet-vps.nl",
database: "eatmyride",
password: "eatmyride",
port: 5432,
});
/**
* Get de userdata van de server.
* @returns observable
*/
exports.getUserData = async function (user_key_from_callback) {
return await pool
.query(get_user_query, [user_key_from_callback])
.then((res) => {
return res;
})
.catch((err) => {
return err;
});
};
/**
* Save the user naar de database
*/
exports.saveUser = async function (user_key, user_secret) {
let client = await pool.connect(); // open de connectie.
try {
client.query("BEGIN"); // geef aan dat de query begint.
await client.query(save_user_query, [user_key, user_secret]); // wacht response af.
await client.query("COMMIT"); // commit de response.
console.log("User saved: " + user_key); // log
} catch (err) {
client.query("ROLLBACK"); // als commit niet is gelukt rollback alles.
console.log("User not Saved \n", err); // error log
} finally {
client.release(); // release de connectie.
}
};
/**
* Remove de user van de database.
*/
exports.removeUser = async function (user_key) {
let client = await pool.connect();
try {
client.query("BEGIN");
await client.query(delete_user_query, [user_key]);
await client.query("COMMIT");
console.log("Removeduser succesfully key: " + user_key);
} catch (err) {
console.log("User was not deleted $user_key\n", err);
client.query("ROLLBACK");
} finally {
client.release();
}
};
/**
* Save the logs in the database
*/
exports.saveLog = async function(fitfile_id, user_key, filetype) {
let client = await pool.connect();
let request_date = new Date(Date.now()).toISOString().toString()
try {
client.query("BEGIN");
await client.query(save_activity_log, [fitfile_id, request_date ,user_key, filetype]);
await client.query("COMMIT");
console.log("Saved log succesfully: " + fitfile_id);
} catch (err) {
console.log("Could not save log of activity\n", err);
client.query("ROLLBACK");
} finally {
client.release();
}
};