Initial commit: Padel Planner API
- Express API server met SQLite - Database migratie (migrate.cjs) - REST endpoints voor players, matches, scores - CHANGELOG.md en .gitignore
This commit is contained in:
+103
@@ -0,0 +1,103 @@
|
||||
// migrate.js — Migreer data.json naar SQLite
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
// Laad de db.js module — we moeten even opletten dat we in de juiste dir staan
|
||||
process.env.DB_PATH = '/data/data.db';
|
||||
|
||||
// We importeren db.js met require, maar omdat we het nog niet in de container hebben
|
||||
// zetten we de module in de juiste dir
|
||||
console.log('📦 Data migratie: JSON → SQLite');
|
||||
console.log('────────────────────────────────\n');
|
||||
|
||||
const DATA_PATH = process.env.DATA_PATH || '/data/data.json';
|
||||
|
||||
if (!fs.existsSync(DATA_PATH)) {
|
||||
console.log('❌ Geen data.json gevonden op', DATA_PATH);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const data = JSON.parse(fs.readFileSync(DATA_PATH, 'utf-8'));
|
||||
console.log(`📖 Ingelezen: ${data.players ? data.players.length : 0} spelers, ${data.matches ? data.matches.length : 0} matches, ${data.settings ? Object.keys(data.settings).length : 0} settings`);
|
||||
|
||||
// Laad db.js — gebruik een relatief pad zodat we ook via node /app/api/migrate.js kunnen draaien
|
||||
const db = require('./db.cjs');
|
||||
|
||||
// ─── Players migreren ───
|
||||
if (Array.isArray(data.players)) {
|
||||
console.log(`\n👥 Spelers (${data.players.length}):`);
|
||||
for (const p of data.players) {
|
||||
try {
|
||||
const existing = db.getPlayerByTelegram(p.telegram_id);
|
||||
if (existing) {
|
||||
console.log(` ⏭️ ${p.name} — bestaat al (telegram_id ${p.telegram_id})`);
|
||||
continue;
|
||||
}
|
||||
db.addPlayer(p);
|
||||
console.log(` ✅ ${p.name} — level ${p.level}, ${p.position} (PIN: ${p.pin})`);
|
||||
} catch (e) {
|
||||
console.log(` ❌ ${p.name} — FOUT: ${e.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Matches migreren ───
|
||||
if (Array.isArray(data.matches)) {
|
||||
console.log(`\n🎾 Matches (${data.matches.length}):`);
|
||||
for (const m of data.matches) {
|
||||
try {
|
||||
// Check of match al bestaat
|
||||
const existing = db.getMatch(m.id);
|
||||
if (existing) {
|
||||
console.log(` ⏭️ Match ${m.id} — bestaat al`);
|
||||
continue;
|
||||
}
|
||||
db.addMatch(m);
|
||||
console.log(` ✅ Match ${m.id} — status: ${m.status}, spelers: ${Array.isArray(m.players) ? m.players.length : 0}`);
|
||||
} catch (e) {
|
||||
console.log(` ❌ Match ${m.id} — FOUT: ${e.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Settings migreren ───
|
||||
if (data.settings && typeof data.settings === 'object') {
|
||||
console.log(`\n⚙️ Settings (${Object.keys(data.settings).length}):`);
|
||||
for (const [key, value] of Object.entries(data.settings)) {
|
||||
db.setSetting(key, value);
|
||||
console.log(` ✅ ${key} = ${value}`);
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Sessions migreren ───
|
||||
if (Array.isArray(data.sessions)) {
|
||||
console.log(`\n🔑 Sessions (${data.sessions.length}):`);
|
||||
for (const s of data.sessions) {
|
||||
try {
|
||||
db.setSession(s.id, s.player_id || s.playerId, s.data || {});
|
||||
console.log(` ✅ Session ${s.id}`);
|
||||
} catch (e) {
|
||||
console.log(` ❌ Session ${s.id} — FOUT: ${e.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Verificatie ───
|
||||
console.log('\n📊 Verificatie:');
|
||||
const players = db.getPlayers();
|
||||
const matches = db.getMatches();
|
||||
console.log(` 👥 Spelers in DB: ${players.length}`);
|
||||
console.log(` 🎾 Matches in DB: ${matches.length}`);
|
||||
console.log(` ⚙️ Settings in DB:`, JSON.stringify(db.getSettings()));
|
||||
|
||||
// Toon spelers
|
||||
for (const p of players) {
|
||||
const days = p.availability && !p.availability.isSet
|
||||
? Object.keys(p.availability).filter(k => k !== 'isSet' && k !== 'days').length
|
||||
: 0;
|
||||
console.log(` 📍 ${p.name}: level ${p.level}, ${days} beschikbare dagen`);
|
||||
}
|
||||
|
||||
console.log('\n✅ Migratie voltooid!');
|
||||
console.log(`📁 data.json: ${DATA_PATH}`);
|
||||
console.log(`🗄️ SQLite: ${process.env.DB_PATH}`);
|
||||
Reference in New Issue
Block a user