fix: logs bug where it was repeating due to flaw in most recent id query

This commit is contained in:
HRG @ SCExC 2025-01-09 15:59:21 -05:00
parent 7a5a1a5e9d
commit 38b9c0e538
4 changed files with 36 additions and 31 deletions

55
db.js
View file

@ -54,7 +54,6 @@ function getUser(db, username) {
return db.prepare("SELECT * from users where username = ?").get(username);
}
// _ _ _______ ______ ___ _ _______ __ __ _______ _______
// | | _ | || || _ | | | | || || | | || || |
// | || || || _ || | || | |_| || _____|| |_| || _ || _ |
@ -63,7 +62,6 @@ function getUser(db, username) {
// | _ || || | | || _ | _____| || _ || || |
// |__| |__||_______||___| |_||___| |_||_______||__| |__||_______||___|
const dbCache = new LRUCache({ max: 25 });
function getDbInstance(dbId) {
@ -86,7 +84,7 @@ function getAllRoutes(db) {
FROM routes
JOIN structures ON routes.structure_id = structures.id
ORDER BY routes.updated_at DESC;
`
`,
)
.all();
}
@ -110,8 +108,6 @@ function getTemplater(structId) {
return etaInstance;
}
function getStructures(db) {
return db.prepare("SELECT * from structures").all();
}
@ -122,17 +118,17 @@ function getStructure(db, id) {
function createStructure(db, name, userId) {
const stmt = db.prepare(
"INSERT INTO structures (name, user_id) VALUES (?, ?)"
"INSERT INTO structures (name, user_id) VALUES (?, ?)",
);
const info = stmt.run(name, userId);
return info.lastInsertRowid; // Returns the structure_id of the newly created structure
}
function createRoute(db, verb, path, structureId, handler) {
path = encodeURI(path)
path = encodeURI(path);
// add default handler here
const stmt = db.prepare(
"INSERT INTO routes (verb, path, structure_id, handler) VALUES (?, ?, ?, ?)"
"INSERT INTO routes (verb, path, structure_id, handler) VALUES (?, ?, ?, ?)",
);
const info = stmt.run(verb, path, structureId, handler);
return info.lastInsertRowid; // Returns the route_id of the newly created route
@ -208,7 +204,7 @@ function getTemplate(db, templateId) {
function getTemplateContentByName(db, structId, name) {
return db
.prepare(
"SELECT content from templates where structure_id = ? AND name = ?"
"SELECT content from templates where structure_id = ? AND name = ?",
)
.get(structId, name);
}
@ -216,7 +212,7 @@ function getTemplateContentByName(db, structId, name) {
function createTemplate(db, structureId, name, content, testObjectString) {
return db
.prepare(
"INSERT INTO templates (structure_id, name, content, test_object) VALUES (?, ?, ?, ?)"
"INSERT INTO templates (structure_id, name, content, test_object) VALUES (?, ?, ?, ?)",
)
.run(structureId, name, content, testObjectString).lastInsertRowid;
}
@ -236,7 +232,7 @@ function getDbsForStructure(db, structureId) {
INNER JOIN dbs ON structure_dbs.db_id = dbs.id
WHERE structure_dbs.structure_id = ?
ORDER BY structure_dbs.created_at, is_aliased ASC;
`
`,
)
.all(structureId);
}
@ -247,7 +243,7 @@ function getDb(db, dbId) {
`SELECT *
FROM dbs
WHERE id = ?;
`
`,
)
.get(dbId);
}
@ -260,7 +256,7 @@ function getDbForStructure(db, structureId, dbId) {
INNER JOIN dbs ON structure_dbs.db_id = dbs.id
WHERE structure_dbs.structure_id = ?
AND structure_dbs.db_id = ?;
`
`,
)
.get(structureId, dbId);
}
@ -312,7 +308,7 @@ function getFile(db, fileId) {
function createFile(db, structure_id, name, filePath, mime_type, mime_subtype) {
return db
.prepare(
"INSERT INTO files (structure_id, name, path, mime_type, mime_subtype) VALUES (?, ?, ?, ?, ?)"
"INSERT INTO files (structure_id, name, path, mime_type, mime_subtype) VALUES (?, ?, ?, ?, ?)",
)
.run(structure_id, name, filePath, mime_type, mime_subtype).lastInsertRowid;
}
@ -322,7 +318,7 @@ function cloneStructure(
newStructureName,
userId,
routePrefix = "",
cloneDbs = []
cloneDbs = [],
) {
const transaction = db.transaction(() => {
const cloneStructure = db.prepare(`
@ -334,7 +330,7 @@ function cloneStructure(
newStructureName,
userId,
routePrefix,
structId
structId,
).lastInsertRowid;
const dbIds = db
@ -356,7 +352,7 @@ function cloneStructure(
`
INSERT INTO dbs (name, structure_id, library)
SELECT name, ?, library FROM dbs WHERE id = ?;
`
`,
)
.run(newStructId, db_id).lastInsertRowid;
@ -364,7 +360,7 @@ function cloneStructure(
`
INSERT INTO structure_dbs (db_id, structure_id, alias)
SELECT ?, ?, alias FROM structure_dbs WHERE db_id = ? AND structure_id = ?;
`
`,
).run(newDb, newStructId, db_id, structId);
db.prepare(`select id from dbs where structure_id = ?`)
@ -382,7 +378,7 @@ function cloneStructure(
`
INSERT INTO structure_dbs (db_id, structure_id, alias)
SELECT db_id, ?, alias FROM structure_dbs WHERE structure_id = ? AND db_id = ?;
`
`,
).run(newStructId, structId, db_id);
}
@ -406,23 +402,32 @@ function cloneStructure(
function createLog(db, structureId, routeId, content, error = false) {
const stmt = db.prepare(
"INSERT INTO logs (error, structure_id, route_id, content) VALUES (?, ?, ?, ?)"
"INSERT INTO logs (error, structure_id, route_id, content) VALUES (?, ?, ?, ?)",
);
const info = stmt.run(error ? 1 : 0, structureId, routeId, content);
return info.lastInsertRowid; // Returns the log_id of the newly created log
}
function getLogsByRoute(db, routeId) {
return db.prepare("SELECT * FROM logs WHERE route_id = ? ORDER BY created_at DESC LIMIT 50").all(routeId).reverse();
return db
.prepare(
"SELECT * FROM logs WHERE route_id = ? ORDER BY created_at DESC LIMIT 50",
)
.all(routeId)
.reverse();
}
function getNewLogsByRoute(db, routeId, since) {
return db.prepare("SELECT * FROM logs WHERE route_id = ? AND id > ? ORDER BY created_at DESC").all(routeId, since);
return db
.prepare(
"SELECT * FROM logs WHERE route_id = ? AND id > ? ORDER BY created_at DESC",
)
.all(routeId, since);
}
function getMostRecentLogIdByRoute(db, routeId) {
const result = db
.prepare("SELECT id FROM logs WHERE route_id = ? ORDER BY created_at DESC LIMIT 1")
.prepare("SELECT MAX(id) AS id FROM logs WHERE route_id = ?")
.get(routeId);
return result ? result.id : 0;
}
@ -461,5 +466,5 @@ module.exports = {
createLog,
getLogsByRoute,
getNewLogsByRoute,
getMostRecentLogIdByRoute
}
getMostRecentLogIdByRoute,
};