cannot fix issue with elapsed timer on admin dashboard. fixing issues with QR code editing.

Grey = cant click
Red = current
Green = complete
blue = skipped?
This commit is contained in:
bobbert committed 2025-03-15 20:01:51 +00:00
1 parent 7d6b73ffb4
commit 0afa6817a8
12 files changed
+1529 -211

No files matched your search

+86 -9
View File
@@ -17,36 +17,113 @@ export function getDb() {
export function queryOne(sql, params = []) {
return new Promise((resolve, reject) => {
getDb().get(sql, params, (err, row) => {
const db = getDb();
if (!db) {
reject(new Error("Database connection not available"));
return;
}
db.get(sql, params, function (err, row) {
if (err) {
console.error("SQL Error in queryOne():", err.message);
console.error("SQL Statement:", sql);
console.error("Parameters:", JSON.stringify(params));
reject(err);
} else {
resolve(row);
return;
}
resolve(row);
});
});
}
export function query(sql, params = []) {
return new Promise((resolve, reject) => {
getDb().all(sql, params, (err, rows) => {
const db = getDb();
if (!db) {
reject(new Error("Database connection not available"));
return;
}
db.all(sql, params, function (err, rows) {
if (err) {
console.error("SQL Error in query():", err.message);
console.error("SQL Statement:", sql);
console.error("Parameters:", JSON.stringify(params));
reject(err);
} else {
resolve(rows);
return;
}
resolve(rows || []);
});
});
}
export function run(sql, params = []) {
return new Promise((resolve, reject) => {
getDb().run(sql, params, function (err) {
const db = getDb();
if (!db) {
const error = new Error("Database connection not available");
console.error(error);
reject(error);
return;
}
// Add better logging
if (
sql.toLowerCase().includes("begin") ||
sql.toLowerCase().includes("commit") ||
sql.toLowerCase().includes("rollback")
) {
console.log(`Transaction operation: ${sql}`);
}
db.run(sql, params, function (err) {
if (err) {
console.error("SQL Error in run():", err.message);
console.error("SQL Statement:", sql);
console.error("Parameters:", JSON.stringify(params));
reject(err);
} else {
resolve({ lastID: this.lastID, changes: this.changes });
return;
}
resolve({
lastID: this.lastID,
changes: this.changes,
});
});
});
}
// New function to explicitly enable foreign keys
export function enableForeignKeys() {
return run("PRAGMA foreign_keys = ON;")
.then(() => console.log("Foreign key constraints enabled"))
.catch((err) => console.error("Error enabling foreign keys:", err));
}
// New function to run multiple statements as a transaction
export async function runTransaction(statements) {
try {
// Begin transaction
await run("BEGIN TRANSACTION");
// Execute all statements in order
for (const [sql, params] of statements) {
await run(sql, params);
}
// Commit on success
await run("COMMIT");
return { success: true };
} catch (error) {
// Rollback on any error
try {
await run("ROLLBACK");
console.log("Transaction rolled back due to error");
} catch (rollbackError) {
console.error("Error during rollback:", rollbackError);
}
throw error;
}
}