REST Service for POPCORN - ILIAS
alex
2025-06-02 3a59b36e843084b6b8879e2fd34694c2052aaef9
adding route kurs/count
1 files added
4 files modified
107 ■■■■ changed files
README.md 6 ●●●●● patch | view | raw | blame | history
app.js 46 ●●●●● patch | view | raw | blame | history
bin/getKursTeilnehmer.js 19 ●●●●● patch | view | raw | blame | history
lib/db.js 34 ●●●● patch | view | raw | blame | history
tst.js 2 ●●● patch | view | raw | blame | history
README.md
@@ -86,4 +86,10 @@
    GET /user/login/:login
    GET /user/userId/:userId
    GET /kurs
    GET /kurs/items/:ref_id
    GET /kurs/teilnehmer/:ref_id
    GET /kurs/teilnehmer/:ref_id/count
app.js
@@ -21,6 +21,7 @@
})
fastify
   /////// USER ////////////////////////////////////////////////////////////////
   .get('/users', async function (req, res) {
      const {offset, limit} = req.query
      const users = await db.getUsers(offset, limit)
@@ -50,6 +51,9 @@
         return res.code(404).send({status: "error", msg: "not found"})
      }
   })
   /////// ref_id / obj_id  ////////////////////////////////////////////////////////////////
   .get("/ref_id/:ref_id", async function (req, res) {
      const {ref_id} = req.params
      const data = await db.getObjIdFromRefId(ref_id)
@@ -71,6 +75,48 @@
      }
   })
   /////// Kurs ////////////////////////////////////////////////////////////////
   .get("/kurs", async function (req, res) {
      let data = await db.getKurse()
      if (data) {
         return res.send(data)
      }
      else {
         return res.code(404).send({status: "error", msg: "not found"})
      }
   })
   .get("/kurs/items/:refId", async function (req, res) {
      const {refId} = req.params
      let data = await db.getKursItems(refId)
      if (data) {
         return res.send(data)
      }
      else {
         return res.code(404).send({status: "error", msg: "not found"})
      }
   })
   .get("/kurs/teilnehmer/:refId", async function (req, res) {
      const {refId} = req.params
      let data = await db.getKursTeilnehmer(refId)
      if (data) {
         return res.send(data)
      }
      else {
         return res.code(404).send({status: "error", msg: "not found"})
      }
   })
   .get("/kurs/teilnehmer/:refId/count", async function (req, res) {
      const {refId} = req.params
      let data = await db.getKursTeilnehmerCount(refId)
      if (data) {
         return res.send(data)
      }
      else {
         return res.code(404).send({status: "error", msg: "not found"})
      }
   })
/////////////////////////////////////////////////////////////////////////
bin/getKursTeilnehmer.js
New file
@@ -0,0 +1,19 @@
const db = require("../lib/db")
const yargs = require("yargs")
/////////////////////////////////////////////////////////////////////////
const argv = yargs
   .usage("$0 <ref_id>", "get kurs TN using <ref_id>",)
   .strict()
   .parse()
run(argv)
   .then(console.log)
   .catch(console.error)
   .finally(process.exit)
async function run({ref_id}) {
   return await db.getKursTeilnehmer(ref_id)
}
lib/db.js
@@ -33,7 +33,8 @@
   getKursItems,
   // getKursByObjId,
   // getKursByRefId,
   getTeilnehmer,
   getKursTeilnehmer,
   getKursTeilnehmerCount,
}
/////////////////////////////////////////////////////////////////////////
@@ -196,18 +197,31 @@
   // return results.length ? results[0] : undefined
}
async function getTeilnehmer (obj_id) {
async function getKursTeilnehmer (ref_id) {
   const pool = await poolP
   const q = `SELECT ci.parent_id, or2.ref_id, or2.obj_id, od.title, od.\`type\`, om.usr_id, ulm.status
   const q = `SELECT ci.parent_id, or2.ref_id, or2.obj_id, od.title, od.type, om.usr_id, ud.login, ud.firstname, ud.lastname, ud.active#, ulm.status
              FROM ${database}.crs_items ci
                       INNER JOIN ${database}.object_reference or2 ON or2.ref_id = ci.obj_id
                       INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id
                       INNER JOIN ${database}.obj_members om ON om.obj_id = or2.obj_id
                       INNER JOIN ${database}.ut_lp_marks ulm
                                  ON ulm.obj_id = or2.obj_id AND ulm.usr_id = om.usr_id
              WHERE (or2.ref_id = ${obj_id}
                  OR parent_id = ${obj_id}) # Fliesenratgeber #AND om.usr_id = 6573 # Holger Börner / nicht-bestanden -
              INNER JOIN ${database}.object_reference or2 ON or2.ref_id = ci.obj_id
              INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id
              INNER JOIN ${database}.obj_members om ON om.obj_id = or2.obj_id
              INNER JOIN ${database}.usr_data ud ON ud.usr_id = om.usr_id
              WHERE (or2.ref_id = ${ref_id} OR parent_id = ${ref_id})
   `
   const [results] = await pool.query(q)
   return results
}
async function getKursTeilnehmerCount (ref_id) {
   const pool = await poolP
   const q = `SELECT COUNT(*) as count
              FROM ${database}.crs_items ci
              INNER JOIN ${database}.object_reference or2 ON or2.ref_id = ci.obj_id
              INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id
              INNER JOIN ${database}.obj_members om ON om.obj_id = or2.obj_id
              INNER JOIN ${database}.usr_data ud ON ud.usr_id = om.usr_id
              WHERE (or2.ref_id = ${ref_id} OR parent_id = ${ref_id})
   `
   let [results] = await pool.query(q)
   results = results.length? results[0] : undefined
   return { ref_id, count: results.count }
}
tst.js
@@ -21,7 +21,7 @@
   // console.log(await db.getKurs(9911))
   // const k = await db.getKurse()
   const k = await db.getKurs(9911)
   const k = await db.getKursTeilnehmerCount(150)
   console.log(k)
   console.log(k.length)