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