Convert your JSON schema to an approximate Prisma Schema.
Using npm:
npm install json-to-prisma-schema-convertor
Using yarn:
yarn add json-to-prisma-schema-convertor --dev
1- Star this repo π
2- Either use npx, or add an npm script like this:
{ "scripts": { "json-to-prisma": "json-to-prisma-schema-convertor convert --inputPath='./prisma/schema.json' --outputPath='./prisma/schema.prisma'" } }
2- Running npm run json-to-prisma
or npx json-to-prisma-schema-convertor convert --inputPath='./prisma/schema.json' --outputPath='./prisma/schema.prisma'
for the following JSON schema
{ "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "User": { "type": "object", "properties": { "id": { "type": "integer" }, "createdAt": { "type": "string", "format": "date-time" }, "email": { "type": "string" }, "weight": { "type": ["number", "null"] }, "is18": { "type": ["boolean", "null"] }, "name": { "type": ["string", "null"] }, "successor": { "anyOf": [ { "$ref": "#/definitions/User" }, { "type": "null" } ] }, "predecessor": { "anyOf": [ { "$ref": "#/definitions/User" }, { "type": "null" } ] }, "role": { "type": "string", "default": "USER", "enum": ["USER", "ADMIN"] }, "posts": { "type": "array", "items": { "$ref": "#/definitions/Post" } }, "keywords": { "type": "array", "items": { "type": "string" } }, "biography": { "type": ["number", "string", "boolean", "object", "array", "null"] } } }, "Post": { "type": "object", "properties": { "id": { "type": "integer" }, "user": { "anyOf": [ { "$ref": "#/definitions/User" }, { "type": "null" } ] } } } }, "type": "object", "properties": { "user": { "$ref": "#/definitions/User" }, "post": { "$ref": "#/definitions/Post" } } }
will generate the following Prisma schema
model Post { id Int user User? } model User { id Int createdAt DateTime email String weight Int? is18 Boolean? name String? successor User? predecessor User? role UserRole @default(USER) posts Post[] keywords String[] biography Json? } enum UserRole { USER ADMIN }
-
outputPath: string - path of the Json schema to convert
- alias:
op
- required
- alias:
-
inputPath: string - path of the prisma schema to be generated
- alias:
ip
- required
- alias: