1 files added
5 files modified
| New file |
| | |
| | | const db = require("../lib/db") |
| | | const yargs = require("yargs") |
| | | const libIlias = require("../lib/libIlias") |
| | | const search = require("../lib/search") |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | const argv = yargs |
| | | .usage("$0 <login>", "delete user <login>",) |
| | | .strict() |
| | | .parse() |
| | | |
| | | console.log(`argv.ref_id=${argv.ref_id}`) |
| | | |
| | | run(argv) |
| | | .then(console.log) |
| | | .catch(console.error) |
| | | .finally(process.exit) |
| | | |
| | | async function run ({login}) { |
| | | let userIds = await search.search(String(login)) |
| | | |
| | | if (userIds.length > 1) throw {msg: "result not distinct!", results: userIds} |
| | | if (userIds.length === 0) throw {msg: "nothing found!", results: userIds} |
| | | |
| | | const usr_id = userIds[0] |
| | | const user = await db.getUserByUserId(usr_id) |
| | | console.log(user) |
| | | |
| | | const { Confirm } = require('enquirer'); |
| | | const prompt = new Confirm({ |
| | | name: 'question', |
| | | message: `Delete user ${user.firstname} ${user.lastname} (${user.usr_id})`, |
| | | }); |
| | | const doContinue = await prompt.run(); |
| | | |
| | | if(doContinue) { |
| | | return libIlias.deleteUser(usr_id) |
| | | } |
| | | else { |
| | | return "nothing changed... bye bye!" |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | function getUserSearchQuery (offset, limit, search) { |
| | | async function getUserSearchQuery (offset, limit, search) { |
| | | const sel = `usr_id, login, firstname, lastname, gender, email, institution, street, city, zipcode, country, department, active` |
| | | if (!search || search === '') { |
| | | return `SELECT ${sel} |
| | |
| | | ` |
| | | } |
| | | else { |
| | | const ids = searchLib.search(search) |
| | | const ids = await searchLib.search(search) |
| | | if (!ids.length) { |
| | | throw "nothing found" |
| | | return getUserSearchQuery(offset, limit) |
| | | return await getUserSearchQuery(offset, limit) |
| | | } // nothing found |
| | | return `SELECT ${sel} |
| | | FROM ${database}.usr_data AS ud |
| | |
| | | const pool = await poolP |
| | | |
| | | try { |
| | | let userSearchQuery = getUserSearchQuery(offset, limit, search) |
| | | let userSearchQuery = await getUserSearchQuery(offset, limit, search) |
| | | // console.log(userSearchQuery) |
| | | const [results, fields] = await pool.query(userSearchQuery) |
| | | const count = await getUserCount(offset, limit, search) |
| | |
| | | async function getUserCount (offset, limit, search) { |
| | | const pool = await poolP |
| | | // const q = getUserSearchQuery(offset, limit, search) |
| | | const q = getUserSearchQuery(0, 1000000, search) // hier darf kein Limit sein, offset=0 |
| | | const q = await getUserSearchQuery(0, 1000000, search) // hier darf kein Limit sein, offset=0 |
| | | const q2 = `SELECT COUNT(*) AS count |
| | | FROM (${q}) AS X` |
| | | const [results, fields] = await pool.query(q2) |
| | |
| | | /* Lib for interacting with customized ILIAS php */ |
| | | const settings = require("../settings") |
| | | const {getObjIdFromRefId} = require("./db") |
| | | const db = require("./db") |
| | | const {url, iliastoken} = settings.ilias |
| | | const search = require("./search") |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | module.exports = { |
| | | importIliasUser, |
| | |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | const settings = require("../settings") |
| | | const {getObjIdFromRefId} = require("./db") |
| | | const db = require("./db") |
| | | const {url, iliastoken} = settings.ilias |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | /////// USER IMPORT //////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | let indexed = false |
| | | async function doIndex () { |
| | | const start = Date.now() |
| | | console.log("++ START indexing Users...") |
| | |
| | | addUser(user) |
| | | // addTags(user) |
| | | } |
| | | indexed = true |
| | | console.log(`++ END indexing Users in ${Date.now() - start}ms`) |
| | | } |
| | | |
| | | function search (query) { |
| | | async function search (query) { |
| | | // when called from a cli program the search index is not initalized |
| | | if(!indexed) await doIndex() |
| | | const searchLimit = 10000 |
| | | return idxUser.search(query, searchLimit) |
| | | } |
| | |
| | | |
| | | function getUserString (user) { |
| | | const {usr_id, firstname, lastname, login, institution, department} = user |
| | | if(firstname.trim()==="Adolfo") console.log(user) |
| | | return `${usr_id} ${login} ${firstname} ${lastname} ${institution} ${department}`.trim() |
| | | // if(firstname.trim()==="Adolfo") console.log(user) |
| | | return `${login} ${firstname} ${lastname} ${institution} ${department}`.trim() |
| | | // return `${usr_id} ${login} ${firstname} ${lastname} ${institution} ${department}`.trim() // KEINE usr_id |
| | | // return `${usr_id} ${firstname} ${lastname}`.trim() |
| | | } |
| | | |
| | |
| | | "chai": "^5.2.0", |
| | | "dayjs": "^1.11.13", |
| | | "dotenv": "^16.5.0", |
| | | "enquirer": "^2.4.1", |
| | | "fastify": "^5.3.3", |
| | | "flexsearch": "^0.8.205", |
| | | "lodash": "^4.17.21", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/ansi-colors": { |
| | | "version": "4.1.3", |
| | | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", |
| | | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", |
| | | "license": "MIT", |
| | | "engines": { |
| | | "node": ">=6" |
| | | } |
| | | }, |
| | | "node_modules/ansi-regex": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", |
| | |
| | | "once": "^1.4.0" |
| | | } |
| | | }, |
| | | "node_modules/enquirer": { |
| | | "version": "2.4.1", |
| | | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", |
| | | "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "ansi-colors": "^4.1.1", |
| | | "strip-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8.6" |
| | | } |
| | | }, |
| | | "node_modules/entities": { |
| | | "version": "4.5.0", |
| | | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", |
| | |
| | | "chai": "^5.2.0", |
| | | "dayjs": "^1.11.13", |
| | | "dotenv": "^16.5.0", |
| | | "enquirer": "^2.4.1", |
| | | "fastify": "^5.3.3", |
| | | "flexsearch": "^0.8.205", |
| | | "lodash": "^4.17.21", |