Riscrive i moduli dati che parlavano con Supabase per usare l'SDK
PocketBase, mantenendo invariate le firme degli hook React Query così i
componenti a valle non cambiano: giocatori-squadra, eventi, presenze,
cacche, pagelle, mvp-voti, badge-social, scout (store/live/stato),
palloni.
Aggiunge due helper condivisi in src/integrations/pocketbase/:
- upsert.ts: PocketBase non ha upsert nativo, questi replicano il
pattern onConflict di Supabase (per id significativo o per filtro su
combinazione di campi), verificati contro un'istanza reale così da non
duplicare record sulla stessa scrittura ripetuta;
- formato.ts: normalizza le date PocketBase ("AAAA-MM-GG HH:MM:SS.sssZ",
spazio non "T") a ISO stretto, altrimenti Date.parse e i confronti
testuali con altre date si comportano in modo incoerente.
Corregge anche due problemi trovati testando contro un'istanza reale:
- alcune API rule confrontavano un campo relazione con @request.auth.id
senza richiedere l'autenticazione, lasciando passare richieste anonime
quando entrambi i lati erano vuoti;
- gli hook non riconoscevano il superuser PocketBase (solo il ruolo
admin applicativo), bloccando le operazioni fatte con pbAdmin.
Aggiunta la colonna "casa" mancante su eventi_app e i campi di sistema
created/updated (non generati automaticamente da PocketBase per le
collection create via migration, a differenza di quanto assunto
inizialmente).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
9 lines
360 B
TypeScript
9 lines
360 B
TypeScript
/**
|
|
* PocketBase restituisce i campi data/ora come "AAAA-MM-GG HH:MM:SS.sssZ" (spazio, non
|
|
* "T"): `Date.parse` su questo formato non è garantito coerente su tutti i motori JS.
|
|
* Normalizza a ISO 8601 stretto prima di qualsiasi confronto/calcolo di date.
|
|
*/
|
|
export function pbISO(v: string): string {
|
|
return v.includes("T") ? v : v.replace(" ", "T");
|
|
}
|