Che cosa fa questo strumento
Un campione JSON diventa un modello Prisma.
{ "id": 1, "name": "Ada", "tags": ["admin"], "score": 9.5 }
model Root {
id Int @id
name String
tags String[]
score Float
}
Il modello da solo non è uno schema.prisma: un file funzionante ha anche un blocco datasource e uno generator. Descrivono il tuo database e il tuo client, di cui un carico JSON non dice nulla.
Ogni modello riceve un identificatore
Prisma rifiuta un modello senza @id (o @@id): prisma validate si ferma lì. Quindi:
- un
iddi tipoIntoStringdiventa l’identificatore; - nessun
ide ne viene aggiunto uno:id Int @id @default(autoincrement()); - un
iddi altro tipo — decimale, booleano, oggetto annidato — è rinominato e tiene la sua chiave originale:
model Root {
id Int @id @default(autoincrement())
id2 Float @map("id")
name String
}
Quest’ultimo caso produceva un modello senza alcun identificatore: Prisma dall’aria valida che lo strumento a riga di comando rifiuta. Trovato scrivendo questa pagina e corretto.
Nulla che somigli a una relazione viene inventato
Un oggetto annidato diventa una colonna Json. Poteva essere una relazione verso un’altra tabella, e indovinare vorrebbe dire inventare un modello, una chiave esterna e un verso a partire da un documento. Lo stesso per un array di oggetti e per un array eterogeneo.
Una lista omogenea di scalari riceve invece una lista nativa — String[], Int[] — che esiste su PostgreSQL, CockroachDB e MongoDB. Su MySQL o SQLite, cambiala in Json: l’uscita non ha datasource, quindi non può sapere quale usi.
Nomi, annullabilità, e ciò che un campione non dice
I nomi dei campi passano in camelCase, e @map conserva la chiave originale appena le due differiscono: content-type diventa contentType @map("content-type") e il nome della tua colonna non cambia. Due chiavi che danno lo stesso camelCase prendono un suffisso invece di fondersi.
Solo null produce una colonna opzionale, Json?. Tutto il resto è obbligatorio, perché il campione aveva un valore — e un campione è il posto sbagliato per scoprire che una colonna ammette nulli. Il ? è un carattere, ed è tuo.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.