basic stuff
This commit is contained in:
commit
6d36cb75ec
4 changed files with 78 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/package-lock.json
|
||||||
|
/node_modules
|
||||||
|
/main.db
|
25
db.js
Normal file
25
db.js
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
import sqlite3 from 'sqlite3'
|
||||||
|
import { open } from 'sqlite'
|
||||||
|
|
||||||
|
let db;
|
||||||
|
|
||||||
|
const sql = `CREATE TABLE IF NOT EXISTS action (addr TEXT, action TEXT)`
|
||||||
|
|
||||||
|
async function initDb() {
|
||||||
|
if (db) return db;
|
||||||
|
|
||||||
|
db = await open({
|
||||||
|
filename: `${process.cwd()}/main.db`,
|
||||||
|
driver: sqlite3.Database
|
||||||
|
});
|
||||||
|
|
||||||
|
let sqlCmds = sql.split('\n');
|
||||||
|
|
||||||
|
for (let cmd of sqlCmds) {
|
||||||
|
await db.run(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
return db;
|
||||||
|
}
|
||||||
|
|
||||||
|
export { initDb };
|
41
index.js
Normal file
41
index.js
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import express from 'express';
|
||||||
|
import { initDb } from './db.js';
|
||||||
|
import bodyParser from 'body-parser';
|
||||||
|
|
||||||
|
const app = express()
|
||||||
|
const port = process.env.port || 5000
|
||||||
|
|
||||||
|
const jsonParser = bodyParser.json()
|
||||||
|
|
||||||
|
app.use(jsonParser);
|
||||||
|
|
||||||
|
app.post('/', async (req, res) => {
|
||||||
|
var db = await initDb();
|
||||||
|
var ip = req.headers['x-forwarded-for'] || req.socket.remoteAddress;
|
||||||
|
var { action } = req.body;
|
||||||
|
action = action + '';
|
||||||
|
|
||||||
|
await db.run('DELETE FROM action WHERE addr = ? AND action = ?', [
|
||||||
|
ip,
|
||||||
|
action
|
||||||
|
]);
|
||||||
|
await db.run('INSERT INTO action (addr, action) VALUES (?, ?)', [
|
||||||
|
ip,
|
||||||
|
action
|
||||||
|
]);
|
||||||
|
let output = await db.all('SELECT * FROM action WHERE action = ?', [
|
||||||
|
action
|
||||||
|
])
|
||||||
|
|
||||||
|
console.log(`${output.length} people triggered ${action}.`);
|
||||||
|
|
||||||
|
res.send({
|
||||||
|
ip,
|
||||||
|
action,
|
||||||
|
count: output.length
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
app.listen(port, () => {
|
||||||
|
console.log(`Example app listening on port ${port}`)
|
||||||
|
})
|
9
package.json
Normal file
9
package.json
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"body-parser": "^2.2.0",
|
||||||
|
"express": "^5.1.0",
|
||||||
|
"sqlite": "^5.1.1",
|
||||||
|
"sqlite3": "^5.1.7"
|
||||||
|
},
|
||||||
|
"type": "module"
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue