mirror of
https://git.femboyfinancial.jp/james/FemScoreboard.git
synced 2024-11-22 02:32:02 -08:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
|
/**
|
||
|
* server.ts
|
||
|
* Web server for the scoreboard page.
|
||
|
*/
|
||
|
|
||
|
import { Database as Database3 } from 'sqlite3';
|
||
|
import { Database, open } from 'sqlite';
|
||
|
import express = require('express');
|
||
|
import 'dotenv/config';
|
||
|
import { ScoreboardMessageRow, ScoreboardUserRow } from './models';
|
||
|
|
||
|
const app = express();
|
||
|
app.use(express.static('public'));
|
||
|
app.set('view engine', 'pug');
|
||
|
const port = process.env.PORT;
|
||
|
let db: Database = null;
|
||
|
|
||
|
async function openDb() {
|
||
|
return open({
|
||
|
filename: 'discord/db.sqlite',
|
||
|
driver: Database3
|
||
|
})
|
||
|
}
|
||
|
|
||
|
app.get('/', async (req, res) => {
|
||
|
const users = await db.all<[ScoreboardUserRow]>('SELECT * FROM users');
|
||
|
//const msgs = await db.all<[ScoreboardMessageRow]>('SELECT * FROM messages');
|
||
|
|
||
|
const funniest = [...users].sort((a, b) => a.reaction_1_total - b.reaction_1_total);
|
||
|
const realest = [...users].sort((a, b) => a.reaction_2_total - b.reaction_2_total);
|
||
|
const cunniest = [...users].sort((a, b) => a.reaction_3_total - b.reaction_3_total);
|
||
|
res.render('index', { funniest, realest, cunniest });
|
||
|
});
|
||
|
|
||
|
app.listen(port, async () => {
|
||
|
console.log('[web] Opening database...');
|
||
|
db = await openDb();
|
||
|
console.log('[web] Database ready.');
|
||
|
console.log(`[web] Listening on port ${port}`);
|
||
|
});
|