Files
kidsai/html/rechner_backup/backup/server.js
2025-06-24 15:43:32 +02:00

79 lines
2.4 KiB
JavaScript

const express = require('express');
const bodyParser = require('body-parser');
const sqlite3 = require('sqlite3').verbose();
const app = express();
const port = 3000;
// Serve static files (your front-end) from the current directory
app.use(express.static(__dirname));
app.use(bodyParser.json());
// Open (or create) SQLite database
const db = new sqlite3.Database('./data.db', (err) => {
if (err) {
console.error("Could not connect to database:", err.message);
} else {
console.log('Connected to SQLite database.');
}
});
// Create table if it doesn't exist
db.run(`CREATE TABLE IF NOT EXISTS coinTrackers (
id TEXT PRIMARY KEY,
data TEXT
)`);
// GET endpoint to retrieve coin tracker data, filtering out trackers without any non-default rows
app.get('/api/coinTrackers', (req, res) => {
db.all(`SELECT * FROM coinTrackers`, [], (err, rows) => {
if (err) {
res.status(500).json({ error: err.message });
return;
}
const trackers = rows
.map(row => JSON.parse(row.data))
.filter(tracker => {
if (tracker.rows && tracker.rows.length > 0) {
return tracker.rows.some(r => {
const base = parseFloat(r.baseCapital) || 0;
const income = parseFloat(r.income) || 0;
const dailyYield = parseFloat(r.dailyYield) || 0;
return base !== 0 || income !== 0 || dailyYield !== 0;
});
}
return false;
});
res.json({ data: trackers });
});
});
// POST endpoint to save/update coin tracker data
// This version clears out existing data before inserting the current trackers from the client.
app.post('/api/coinTrackers', (req, res) => {
const trackers = req.body.data; // Expecting an array of tracker objects
// Clear out all existing trackers from the database
db.run(`DELETE FROM coinTrackers`, [], function(err) {
if (err) {
res.status(500).json({ error: err.message });
return;
}
// Insert all current trackers
const stmt = db.prepare(`INSERT OR REPLACE INTO coinTrackers (id, data) VALUES (?, ?)`);
trackers.forEach(tracker => {
stmt.run(tracker.id, JSON.stringify(tracker));
});
stmt.finalize(err => {
if (err) {
res.status(500).json({ error: err.message });
return;
}
res.json({ message: "Data saved successfully." });
});
});
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});