Add daily stats

This commit is contained in:
Christopher Cookman 2024-12-16 12:35:28 -07:00
parent 9d34f3570e
commit d6bcaea4df
2 changed files with 47 additions and 2 deletions

View file

@ -101,6 +101,28 @@ const addAnalytic = (tag) => {
}); });
} }
const dailyAnalytic = (tag) => { // This is a bit more complex, but it's just a daily count
// check if the tag, and tag_date exists. If the date is not today reset count to 0 and date to today
// If the date is today, increment count
const date = new Date();
const today = `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;
db.get("SELECT * FROM dailyAnalytics WHERE tag = ? AND tag_date = ?", [tag, today], (err, row) => {
if (err) {
console.error('Error checking daily analytics:', err);
}
if (!row) {
db.run("INSERT INTO dailyAnalytics (tag, tag_date, count) VALUES (?, ?, 1)", [tag, today], (err) => {
if (err) console.error('Error creating daily analytics:', err);
});
} else {
db.run("UPDATE dailyAnalytics SET count = count + 1 WHERE tag = ? AND tag_date = ?", [tag, today], (err) => {
if (err) console.error('Error updating daily analytics:', err);
});
}
});
}
app.use((req,res,next) => { app.use((req,res,next) => {
if (req.path.startsWith("/api/v1")) { if (req.path.startsWith("/api/v1")) {
addAnalytic("apiCalls"); addAnalytic("apiCalls");
@ -538,13 +560,28 @@ app.get("/discord", (req, res) => {
}); });
app.get("/analytics", (req, res) => { app.get("/analytics", (req, res) => {
db.all("SELECT * FROM analytics", (err, rows) => { db.all("SELECT * FROM analytics", (err, total) => {
if (err) { if (err) {
console.error('Error getting analytics:', err); console.error('Error getting analytics:', err);
res.status(500).send('Internal server error'); res.status(500).send('Internal server error');
return; return;
} }
res.json(rows); db.all("SELECT * FROM dailyAnalytics", (err, daily) => {
if (err) {
console.error('Error getting daily analytics:', err);
res.status(500).send('Internal server error');
return;
}
// Find the latest date and add "current:true" to it
var latest = {tag_date: "1970-01-01", count: 0};
daily.forEach((entry) => {
if (entry.tag_date > latest.tag_date) {
latest = entry;
}
});
latest.current = true;
res.json({total, daily});
});
}); });
}); });
@ -570,6 +607,7 @@ app.get('/api/v1/route/:apiKey/:ani/:number', (req, res) => {
console.log(`New Call: ${ani} -> ${number}`); console.log(`New Call: ${ani} -> ${number}`);
// incriment estCallsMade analytics // incriment estCallsMade analytics
addAnalytic("estCallsMade"); addAnalytic("estCallsMade");
dailyAnalytic("dailyCallsMade");
if (ani >= row.block_start && ani <= row.block_start + row.block_length) { if (ani >= row.block_start && ani <= row.block_start + row.block_length) {
res.status(200).send('local'); res.status(200).send('local');
} else { } else {
@ -602,6 +640,7 @@ app.get('/api/v1', (req, res) => { // Backwards compatibility with TandmX cause
// If it is, return `local` // If it is, return `local`
console.log(`New Call: ${ani} -> ${number}`); console.log(`New Call: ${ani} -> ${number}`);
addAnalytic("estCallsMade"); addAnalytic("estCallsMade");
dailyAnalytic("dailyCallsMade");
if (ani >= row.block_start && ani <= row.block_start + row.block_length) { if (ani >= row.block_start && ani <= row.block_start + row.block_length) {
res.status(200).send('local'); res.status(200).send('local');
} else { } else {

View file

@ -0,0 +1,6 @@
CREATE TABLE IF NOT EXISTS dailyAnalytics (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tag TEXT NOT NULL,
count INTEGER NOT NULL DEFAULT 0,
tag_date TEXT NOT NULL
);