Source: database/eatMyRideDB.js

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();
  }
};