-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathschema.js
38 lines (33 loc) · 1.04 KB
/
schema.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { Database } from 'bun:sqlite';
export async function initializeDatabase() {
const db = new Database('trackmania_wrapped.db');
// Enable foreign keys
db.run('PRAGMA foreign_keys = ON');
// Create tables
db.run(`
CREATE TABLE IF NOT EXISTS maps (
uid TEXT PRIMARY KEY,
day INTEGER NOT NULL,
month INTEGER NOT NULL,
year INTEGER NOT NULL,
bronze_time INTEGER NOT NULL,
silver_time INTEGER NOT NULL,
gold_time INTEGER NOT NULL,
author_time INTEGER NOT NULL,
thumbnail_url TEXT
)
`);
db.run(`
CREATE TABLE IF NOT EXISTS runs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
map_uid TEXT NOT NULL,
user_id TEXT NOT NULL,
time INTEGER NOT NULL,
medal TEXT NOT NULL,
position INTEGER NOT NULL,
FOREIGN KEY(map_uid) REFERENCES maps(uid),
UNIQUE(map_uid, user_id)
)
`);
return db;
}