REST Service for POPCORN - ILIAS
alex
2025-05-15 9aaf9d2466a026494cd81e0a814efdd00638dec6
adding db queries
1 files added
1 files modified
133 ■■■■ changed files
lib/db.js 74 ●●●●● patch | view | raw | blame | history
tst.js 59 ●●●●● patch | view | raw | blame | history
lib/db.js
New file
@@ -0,0 +1,74 @@
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,
   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
       LIMIT ${limit}
       OFFSET ${offset}
      `
   )
   return results
}
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}'`
   )
   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}'`
   )
   return results
}
/////////////////////////////////////////////////////////////////////////
async function promiseDelay (ms) {
   return new Promise(resolve => setTimeout(resolve, ms))
}
tst.js
@@ -1,4 +1,5 @@
const mysql = require("mysql2/promise")
const db = require("./lib/db")
const {host, port, user, database, password} = require("./settings").db
@@ -12,25 +13,45 @@
/////////////////////////////////////////////////////////////////////////
async function run () {
   // Create the connection to database
   console.log(111111111111,mysql)
   const connection = await mysql.createConnection({
      host,
      port,
      database,
      user,
      password,
   })
   // const user = await db.getUserByLogin("242424")
   // console.log("user", user)
   //
   // const user2 = await db.getUserByUserId(6)
   // console.log("user2", user2)
// A simple SELECT query
   try {
      const [results, fields] = await connection.query(
         `SELECT ud.* FROM ilias.usr_data AS ud WHERE login = '242424'`
      )
      console.log(results) // results contains rows returned by server
      console.log(fields) // fields contains extra meta data about results, if available
   } catch (err) {
      console.log(err)
   const users = await db.getUsers()
   const users2 = users.map(({usr_id,login,firstname,lastname,email,institution}) => ({usr_id,login,firstname,lastname,institution}))
   console.table(users2)
   }
// async function run () {
//    // Create the connection to database
//    // console.log(111111111111,mysql)
//    const connection = await mysql.createConnection({
//       host,
//       port,
//       database,
//       user,
//       password,
//    })
//
// // A simple SELECT query
//    try {
//       const sel = `usr_id, login, firstname, lastname, gender, email, institution, street, city, zipcode, country, department, active`
//       // const sel = "*"
//       const [results, fields] = await connection.query(
//          `SELECT ${sel} FROM ilias.usr_data AS ud WHERE login = '242424'`
//       )
//
//       console.log(results) // results contains rows returned by server
//       // console.log(fields) // fields contains extra meta data about results, if available
//    } catch (err) {
//       console.log(err)
//    }
// }
/////////////////////////////////////////////////////////////////////////
async function promiseDelay(ms) {
    return new Promise(resolve => setTimeout(resolve, ms))
}