update database layout

This commit is contained in:
2025-09-09 15:26:02 +02:00
parent f4e41a5b9f
commit c7d71036d7
3 changed files with 42 additions and 10 deletions

View File

@@ -4,7 +4,7 @@
"description": "",
"license": "MIT",
"author": "",
"type": "commonjs",
"type": "module",
"main": "src/index.js",
"scripts": {
"start": "node src/index.js"

View File

@@ -1,15 +1,15 @@
// copied from one of my older projects
const mysql = require('mysql2/promise');
import { createPool } from 'mysql2/promise';
function getEnvVar(name) {
const value = process.env[name];
if (value === null) {
if (value == null) {
throw new Error(`Environment variable ${name} is not defined`);
}
return value;
}
const pool = mysql.createPool({
const pool = createPool({
host: getEnvVar('MYSQL_HOST'),
user: getEnvVar('MYSQL_USER'),
password: getEnvVar('MYSQL_PASSWORD'),
@@ -18,13 +18,44 @@ const pool = mysql.createPool({
const migrations = [
{
name: "init_dart_table",
name: "init",
up: async (conn) => {
await conn.query(`
CREATE TABLE dart (
id INT PRIMARY KEY AUTO_INCREMENT
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL
)
`);
await conn.query(`
CREATE TABLE IF NOT EXISTS games (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL UNIQUE
)
`);
await conn.query(`
CREATE TABLE IF NOT EXISTS scores (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
game_id INT NOT NULL,
score INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (game_id) REFERENCES games(id),
UNIQUE(user_id, game_id)
)
`);
await conn.query(`
CREATE INDEX IF NOT EXISTS idx_scores_game_score
ON scores(game_id, score DESC)
`);
await pool.query(
`INSERT INTO games (name) VALUES (?) ON DUPLICATE KEY UPDATE id=id`,
['darts']
);
}
}
];
@@ -64,7 +95,7 @@ async function initDB() {
}
}
module.exports = {
export {
pool,
initDB
};

View File

@@ -1,4 +1,5 @@
require('dotenv').config()
const db = require('./db');
import dotenv from 'dotenv';
dotenv.config();
const db = await import('./db.js');
db.initDB();