# Database CrAPP Struttura del database Supabase (PostgreSQL) e ruolo di ogni tabella. Lo schema autoritativo sono le migration in `supabase/migrations/`: **una tabella nuova va documentata qui nella stessa modifica che la crea**. Le funzionalità future stanno in [ROADMAP.md](ROADMAP.md), non in questo file. ## Anagrafica e utenti | Tabella | Scopo | Note | |---|---|---| | `giocatori_squadra` | Anagrafica operativa della squadra, con ID testuali (`g1`…`gN`), dati gestiti dagli admin (nome, cognome, numero, ruolo) e collegamento all'account (`auth_user_id`). | Introdotta dalla migration `m1_giocatori_squadra`, già popolata (17 giocatori) ma **non ancora letta dal codice**: la rosa arriva tuttora da `src/lib/crapp-data.ts`, che resta il fallback anche dopo il passaggio. Destinata a diventare la source of truth. Vedi DD-015 e DD-016. | | `giocatori` | Anagrafica giocatori con UUID. | Presente ma **non usata** dal codice attuale: la convergenza è rinviata (DD-012, DD-014). | | `profili_giocatore` | Dati personali, metadati del documento d'identità, certificato medico e path dei file, in relazione 1:1 con `giocatori_squadra`. | **Prevista** per la v1.1 (DD-016), non ancora creata. | | `user_roles` | Ruoli applicativi (es. amministratore, giocatore). | | `giocatori_squadra` / `giocatori` sono usate da: Squadra, Profili, Presenze, Scout, Badge, Pagelle. ## Eventi e presenze | Tabella | Scopo | Note | |---|---|---| | `eventi_app` | Eventi gestionali utilizzati dall'app. | Modello in uso dal codice attuale. | | `risposte_presenze` | Risposte dei giocatori agli eventi. | Modello in uso dal codice attuale. | | `eventi` | Calendario generale: allenamenti, partite, eventi della squadra. | Modello "nuovo" con autenticazione e vincoli, non ancora adottato (DD-014). | | `presenze` | Presenze agli eventi. | Come sopra (DD-014). | ## Scout | Tabella | Scopo | Note | |---|---|---| | `scout_sessioni` | Sessioni di Scout Live: una sessione corrisponde a una partita. | **Non ancora usata dal codice**: oggi lo stato della sessione vive in `localStorage` (`src/lib/scout-live.ts`, `scout-store.ts`) e sul database finiscono solo le azioni in `scout_live`. | | `scout_live` | Eventi registrati durante lo Scout Live. | Serve esclusivamente per statistiche di squadra, mai per classifiche individuali (DD-008). | ## Votazioni | Tabella | Scopo | Note | |---|---|---| | `mvp_voti` | Voti MVP assegnati a fine partita. | | | `pagelle_voti` | Voti anonimi assegnati ai giocatori. | Usati per il voto medio. | | `badge_social_voti` | Voti social per i badge. | | ## Turni e notifiche | Tabella | Scopo | Note | |---|---|---| | `turni_palloni` | Gestione dei turni palloni. | | | `push_subscriptions` | Dispositivi registrati per le notifiche Push. | | | `promemoria_push` | Storico dei promemoria inviati. | | ## Funzioni speciali | Tabella | Scopo | Note | |---|---|---| | `cacche_partita` | Sondaggio prepartita. | Usato per statistiche e badge segreti. | ## Badge Non esiste una tabella dedicata: i badge vengono **calcolati a runtime** dall'applicazione a partire dai dati esistenti (DD-007).