Files
myspeed/server/controller/speedtests.js
2022-06-11 01:03:09 +02:00

47 lines
1.6 KiB
JavaScript

const db = require('../index').database;
// Inserts a new speedtest into the database
module.exports.create = (ping, download, upload, time, type = "auto", error = null) => {
return db.prepare("INSERT INTO speedtests (ping, download, upload, created, error, time, type) VALUES (?, ?, ?, ?, ?, ?, ?)").run(ping, download, upload,
new Date().toISOString(), error, time, type).lastInsertRowid;
}
// Gets a specific speedtest by id
module.exports.get = (id) => {
let speedtest = db.prepare("SELECT * FROM speedtests WHERE id = ?").get(id);
if (speedtest.error === null) delete speedtest.error;
return speedtest
}
// Lists all speedtests from the database
module.exports.list = () => {
let dbEntries = db.prepare("SELECT * FROM speedtests ORDER BY created DESC").all();
let all = [];
dbEntries.forEach((entry) => {
if (entry.error === null) delete entry.error
all.push(entry);
});
return all;
}
// Gets the latest speedtest from the database
module.exports.latest = () => {
let speedtest = db.prepare("SELECT * FROM speedtests ORDER BY id DESC").get();
if (speedtest != null && speedtest.error === null) delete speedtest.error;
return speedtest
}
// Deletes a specific speedtest
module.exports.delete = (id) => {
if (this.get(id) === undefined) return undefined;
db.prepare("DELETE FROM speedtests WHERE id = ?").run(id);
return true;
}
// Removes speedtests older than 24 hours
module.exports.removeOld = () => {
db.prepare("DELETE FROM speedtests WHERE created <= date('now','-1 day')").run();
return true;
}