aboutsummaryrefslogtreecommitdiff
path: root/js/database.js
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2026-07-19 11:55:51 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2026-07-19 12:07:12 +0200
commitdd52c913c454b9a6cf9ab7e7b102f9e7ede31754 (patch)
tree6f1e8a26ae2b47a9f6e609e7122dbb4270fe3ca1 /js/database.js
parent09a0b5bd95bea76537c7de3525093ecc5a0abd7c (diff)
downloadbycs-sol-dd52c913c454b9a6cf9ab7e7b102f9e7ede31754.tar.gz
bycs-sol-dd52c913c454b9a6cf9ab7e7b102f9e7ede31754.zip
use a single submit table to decrease load times
Diffstat (limited to 'js/database.js')
-rw-r--r--js/database.js27
1 files changed, 24 insertions, 3 deletions
diff --git a/js/database.js b/js/database.js
index 73c2d17..8149c35 100644
--- a/js/database.js
+++ b/js/database.js
@@ -23,6 +23,8 @@ const DB_TEMPLATE_LIST_FOOTER = `
let studentDbs = populateStudentDbs();
+const ID_QUERY_PARAM_REGEX = /[?&]id=(\d+)/
+
async function populateStudentDbs() {
const courseUrl = `https://lernplattform.bycs.de/course/view.php?id=${getCourseId()}`;
const courseRes = await fetch(courseUrl);
@@ -30,11 +32,17 @@ async function populateStudentDbs() {
let dbs = new Map();
for (const link of courseDoc.querySelectorAll("div.activityname a.aalink")) {
+ if (link.textContent.trim() === "Submit Datenbank") {
+ const dbId = link.href.match(ID_QUERY_PARAM_REGEX)[1]
+ dbs.set("submit", new DB(dbId));
+ continue;
+ }
+
const match = link.textContent.match(/(\d+)(Shadow|Public|Submit)/);
if (!match) continue;
const studentId = match[1];
const dbType = match[2];
- const dbId = link.href.match(/[?&]id=(\d+)/)[1]
+ const dbId = link.href.match(ID_QUERY_PARAM_REGEX)[1]
if (!dbs.has(studentId)) {
dbs.set(studentId, {});
@@ -46,6 +54,11 @@ async function populateStudentDbs() {
return dbs;
}
+async function getSubmitDb() {
+ const dbs = await studentDbs;
+ return dbs.get("submit");
+}
+
class DB {
constructor(id) {
this.id = id;
@@ -127,13 +140,21 @@ async function addEntryToDatabaseActivity(id, json) {
}
async function addEntryToStudentDatabase(student, type, json) {
- const dbs = await DB.getStudentDbs(student);
- const db = dbs[type];
+ let db;
+ // global submit database
+ if (type === "submit") {
+ db = await getSubmitDb();
+ // individuell databases
+ } else {
+ const dbs = await DB.getStudentDbs(student);
+ db = dbs[type];
+ }
await db.saveEntry(json);
}
export {
DB,
+ getSubmitDb,
loadFromDatabaseActivity, loadFromStudentDatabase,
addEntryToDatabaseActivity, addEntryToStudentDatabase,
};