1 files added
5 files modified
| | |
| | | |
| | | const searchLib = require("./lib/search") |
| | | searchLib.doIndex().catch(console.error) |
| | | fastify.get("/api/search/user", async function (req, res) { |
| | | fastify |
| | | .get("/api/search/user", async function (req, res) { |
| | | console.log(req.query) |
| | | const search = req.query?.search |
| | | if (!search) { |
| | |
| | | return res.send(data) |
| | | } |
| | | }) |
| | | .post("/api/search/reindex", async function (req, res) { |
| | | console.log("REINDEX ++++") |
| | | const start = Date.now() |
| | | await searchLib.doIndex().catch(console.error) |
| | | return res.send({ |
| | | status: "ok", |
| | | msg: `reindexed in ${Date.now() - start} ms`, |
| | | }) |
| | | }) |
| | | |
| | | fastify |
| | | /////// USER //////////////////////////////////////////////////////////////// |
| New file |
| | |
| | | const db = require("../lib/db") |
| | | const yargs = require("yargs") |
| | | const libIlias = require("../lib/libIlias") |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | const argv = yargs |
| | | .usage("$0 <usr_id>", "delete user <usr_id>",) |
| | | .strict() |
| | | .parse() |
| | | |
| | | console.log(`argv.ref_id=${argv.ref_id}`) |
| | | |
| | | run(argv) |
| | | .then(console.log) |
| | | .catch(console.error) |
| | | .finally(process.exit) |
| | | |
| | | async function run ({usr_id}) { |
| | | return libIlias.deleteUser(usr_id) |
| | | |
| | | } |
| | | |
| | |
| | | async function doIndex () { |
| | | const start = Date.now() |
| | | console.log("++ START indexing Users...") |
| | | |
| | | const {readFromFile, file} = settings.search |
| | | clearIndex(idxUser) |
| | | |
| | | let users |
| | | if (readFromFile) { |
| | |
| | | console.log("~~~ reading users from DB ... ~~~") |
| | | const db = require("./db") |
| | | const {data} = await db.getUsers(0, 100000) |
| | | console.log(`loaded ${data.length} users from DB...`) |
| | | users = data |
| | | } |
| | | |
| | |
| | | |
| | | 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() |
| | | // return `${usr_id} ${firstname} ${lastname}`.trim() |
| | | } |
| | |
| | | remove(idxUser, usr_id) |
| | | } |
| | | |
| | | function clearIndex(index) { |
| | | index.clear() |
| | | } |
| | | |
| | | |
| | | /////// idxTags FNS //////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | |
| | | describe("the function importIliasUser", function () { |
| | | |
| | | let lastUserId = null |
| | | const user = { |
| | | // Action: "Insert", |
| | | login: "affoReloaded", |
| | |
| | | }, |
| | | } |
| | | |
| | | afterEach(async function () { |
| | | await deleteUser(lastUserId) |
| | | }) |
| | | |
| | | it("should import a new user to ILIAS", async function () { |
| | | const res = await libIlias.importIliasUser(user) |
| | | console.dir(res, {depth:null}) |
| | |
| | | expect(res.usr_id).to.be.a("number").above(0) |
| | | |
| | | const {usr_id} = res |
| | | lastUserId = usr_id |
| | | const user2 = await db.getUserByUserId(usr_id) |
| | | console.log(user2) |
| | | expect(user2).to.have.property("login").and.to.equal("affoReloaded") |
| | | expect(user2).to.have.property("usr_id").and.to.equal(res.usr_id) |
| | | |
| | | // const res2 = await libIlias.deleteUser(usr_id) |
| | | // console.log(res2) |
| | | // expect(res2).to.have.property("status").and.to.equal("ok") |
| | | // expect(res2).to.have.property("command").and.to.equal("deleteUser") |
| | | }) |
| | | |
| | | }) |
| | | |
| | | |
| | | async function deleteUser (usr_id) { |
| | | const res2 = await libIlias.deleteUser(usr_id) |
| | | console.log(res2) |
| | | expect(res2).to.have.property("status").and.to.equal("ok") |
| | | expect(res2).to.have.property("command").and.to.equal("deleteUser") |
| | | }) |
| | | |
| | | }) |
| | | } |
| | |
| | | <script setup> |
| | | |
| | | import {apiTokenValid, deleteApiToken, routerBase} from "../lib/api" |
| | | import {reindex, apiTokenValid, deleteApiToken, routerBase} from "../lib/api" |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | |
| | | <RouterLink :to="`${routerBase}/ui/user`">Users</RouterLink> |
| | | <RouterLink :to="`${routerBase}/ui/kurs`">Courses</RouterLink> |
| | | <div style="flex-grow: 1" /> |
| | | <div> |
| | | <button type="button" @click="reindex()">♻</button> |
| | | </div> |
| | | <div v-if="apiTokenValid"> |
| | | <button type="button" @click="deleteApiToken()">logout</button> |
| | | </div> |
| | |
| | | |
| | | let apiToken = useSessionStorage("apiToken", "") |
| | | export const apiTokenValid = computed(() => apiToken.value !== null && apiToken.value !== "") |
| | | |
| | | export function setApiToken(token) { |
| | | apiToken.value = token |
| | | } |
| | | |
| | | export function deleteApiToken() { |
| | | apiToken.value = null |
| | | } |
| | |
| | | return await res.json() |
| | | } |
| | | |
| | | export async function reindex () { |
| | | let url = `${apiBase}/search/reindex?token=${apiToken.value}` |
| | | const res = await fetch(url, {method: "POST"}) |
| | | const data = await res.json() |
| | | console.log(data) |
| | | return data |
| | | } |