From 4bc1e5806a5d6ab6b87199dbb366c4ae54823701 Mon Sep 17 00:00:00 2001
From: alex <alex@alexloehr.net>
Date: Thu, 15 May 2025 21:14:43 +0000
Subject: [PATCH] adding REST routes
---
lib/db.js | 19 ++++++++++++++-----
app.js | 22 ++++++++++++++++++++++
tst.js | 2 ++
3 files changed, 38 insertions(+), 5 deletions(-)
diff --git a/app.js b/app.js
new file mode 100644
index 0000000..c2eef5e
--- /dev/null
+++ b/app.js
@@ -0,0 +1,22 @@
+const fastify = require('fastify')({
+ logger: true
+})
+const db = require("./lib/db")
+
+/////////////////////////////////////////////////////////////////////////
+
+fastify.get('/api/users', async function (req, res) {
+ const {offset, limit} = req.query
+ const users = await db.getUsers(offset, limit)
+ return res.send(users)
+})
+
+/////////////////////////////////////////////////////////////////////////
+
+fastify.listen({ port: 4101 }, function (err, address) {
+ if (err) {
+ fastify.log.error(err)
+ process.exit(1)
+ }
+ // Server is now listening on ${address}
+})
diff --git a/lib/db.js b/lib/db.js
index 3ff3fc7..61b297f 100644
--- a/lib/db.js
+++ b/lib/db.js
@@ -27,7 +27,7 @@
/////////////////////////////////////////////////////////////////////////
-async function getUsers (limit = 10, offset = 0) {
+async function getUsers (offset = 0, limit = 10) {
const sel = `usr_id, login, firstname, lastname, gender, email, institution, street, city, zipcode, country, department, active`
// TODO user defined fields
@@ -40,13 +40,20 @@
OFFSET ${offset}
`
)
- return results
+ const count = await getUserCount()
+ return {
+ total: count,
+ offset, limit,
+ data: 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]+$'`
+ `SELECT COUNT(*)
+ FROM ilias.usr_data AS ud
+ WHERE login REGEXP '^[0-9]+$'`
)
return results[0]["COUNT(*)"]
}
@@ -59,7 +66,8 @@
const [results, fields] = await pool.query(
`SELECT ${sel}
FROM ilias.usr_data AS ud
- WHERE login = '${login}' AND login REGEXP '^[0-9]+$'`
+ WHERE login = '${login}'
+ AND login REGEXP '^[0-9]+$'`
)
return results
}
@@ -72,7 +80,8 @@
const [results, fields] = await pool.query(
`SELECT ${sel}
FROM ilias.usr_data AS ud
- WHERE usr_id = '${userId}' AND login REGEXP '^[0-9]+$'`
+ WHERE usr_id = '${userId}'
+ AND login REGEXP '^[0-9]+$'`
)
return results
}
diff --git a/tst.js b/tst.js
index daaa8c5..fc30d66 100644
--- a/tst.js
+++ b/tst.js
@@ -19,9 +19,11 @@
const user2 = await db.getUserByUserId(317)
console.log("user2", user2)
+ const start = new Date()
const users = await db.getUsers(10,0)
const users2 = users.map(({usr_id,login,firstname,lastname,email,institution}) => ({usr_id,login,firstname,lastname,institution}))
console.table(users2)
+ console.log(new Date() - start + "ms")
const count = await db.getUserCount()
console.log("count",count)
--
Gitblit v1.8.0