const mysql = require("mysql2/promise") const {host, port, user, database, password} = require("./../settings").db ///////////////////////////////////////////////////////////////////////// let poolP = initPool() async function initPool () { return mysql.createPool({ host, port, database, user, password, }) } ///////////////////////////////////////////////////////////////////////// module.exports = { getUsers, getUserCount, getUserByLogin, getUserByUserId, } ///////////////////////////////////////////////////////////////////////// async function getUsers (limit = 10, offset = 0) { const sel = `usr_id, login, firstname, lastname, gender, email, institution, street, city, zipcode, country, department, active` // TODO user defined fields const pool = await poolP const [results, fields] = await pool.query( `SELECT ${sel} FROM ilias.usr_data AS ud WHERE login REGEXP '^[0-9]+$' LIMIT ${limit} OFFSET ${offset} ` ) return results } async function getUserCount () { const pool = await poolP const [results, fields] = await pool.query( `SELECT COUNT(*) FROM ilias.usr_data AS ud WHERE login REGEXP '^[0-9]+$'` ) return results[0]["COUNT(*)"] } async function getUserByLogin (login) { const sel = `usr_id, login, firstname, lastname, gender, email, institution, street, city, zipcode, country, department, active` // TODO user defined fields const pool = await poolP const [results, fields] = await pool.query( `SELECT ${sel} FROM ilias.usr_data AS ud WHERE login = '${login}' AND login REGEXP '^[0-9]+$'` ) return results } async function getUserByUserId (userId) { const sel = `usr_id, login, firstname, lastname, gender, email, institution, street, city, zipcode, country, department, active` // TODO user defined fields const pool = await poolP const [results, fields] = await pool.query( `SELECT ${sel} FROM ilias.usr_data AS ud WHERE usr_id = '${userId}' AND login REGEXP '^[0-9]+$'` ) return results } ///////////////////////////////////////////////////////////////////////// async function promiseDelay (ms) { return new Promise(resolve => setTimeout(resolve, ms)) }