feat: salva partite su SQLite e aggiunge storico in dev
- Aggiunge src/db.js con better-sqlite3: tabella partite con nomi, modalità, set, formazione di partenza per set, punteggi e vincitore - Salvataggio automatico al termine della partita (websocket-handler.js) - Aggiunge formInizioSet in gameState per tracciare la formazione iniziale di ogni set - Aggiunge storico.html: pagina vanilla dark-theme con lista partite espandibili (set, punteggio, formazioni) - Aggiunge server storico su porta 3002 in dev (vite-plugin-websocket.js) - Aggiunge endpoint /api/partite su displayApp (server.js) - Migliora banner di avvio con URL storico locale e da rete - Migliora log WebSocket: connessione aperta, ruolo unregistered, client rimanenti - Aggiorna .gitignore: ignora tutta la cartella data/
This commit is contained in:
15
server.js
15
server.js
@@ -5,6 +5,7 @@ import { fileURLToPath } from 'url'
|
||||
import { dirname, join } from 'path'
|
||||
import { setupWebSocketHandler } from './src/websocket-handler.js'
|
||||
import { printServerInfo } from './src/server-utils.js'
|
||||
import { getPartite, getPartita } from './src/db.js'
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url)
|
||||
const __dirname = dirname(__filename)
|
||||
@@ -23,6 +24,20 @@ const displayApp = express()
|
||||
// Espone i file generati dalla build di Vite.
|
||||
displayApp.use(express.static(join(__dirname, 'dist')))
|
||||
|
||||
// API REST per le partite salvate.
|
||||
displayApp.get('/api/partite', (_req, res) => {
|
||||
try { res.json(getPartite()) }
|
||||
catch (err) { res.status(500).json({ error: err.message }) }
|
||||
})
|
||||
|
||||
displayApp.get('/api/partite/:id', (req, res) => {
|
||||
try {
|
||||
const p = getPartita(Number(req.params.id))
|
||||
if (!p) return res.status(404).json({ error: 'Not found' })
|
||||
res.json(p)
|
||||
} catch (err) { res.status(500).json({ error: err.message }) }
|
||||
})
|
||||
|
||||
// Fallback per SPA: restituisce `index.html` per tutte le route.
|
||||
displayApp.get(/.*/, (_req, res) => {
|
||||
res.sendFile(join(__dirname, 'dist', 'index.html'))
|
||||
|
||||
Reference in New Issue
Block a user