prisma-datamodel

Transform prisma datamodel SDL into graphql-js SDL

Apache-2.0 345 个版本
安装
npm install prisma-datamodel
yarn add prisma-datamodel
pnpm add prisma-datamodel
bun add prisma-datamodel
README

prisma-datamodel

The Prisma Datamodel package forms the foundation of all datamodel related tasks in the CLI.

Components

  • Data structures to represent datamodels in memory: ISDL, IGQLType, IGQLField. These data structures are documented inline. The data structures might be self referencing, and all operations in this library guarantee to keep the references valid.
  • Constants for known primitive types: TypeIdentifier, TypeIdentifiers
  • Classes to parse data models from strings into the internal format: Parser, with the factory classDefaultParser
  • Classes to render data models to strings, from the internal format: Renderer, with the factory class Default Renderer
  • Auxiliary functions: cloneSchema to safely clone an ISDLstructure, toposortto sort a datamodel in topological order.

Different Database Types

When creating a parser or renderer, a flag that indicates the database type has to be passed. The internal representation is guaranteed to be consistent between different databases. It is possible to parse a mongo schema and render a postgres schema without any transformations in between.

Datamodel V1 vs. V1.1

The parser is capable of parsing both datamodel formats, and even models with mixed directives from both standards. For rendering, a flag can be passed which indicates the datamodel format to follow.

Modifying a Model

The types ISDL, IGQLType and IGQLField are designed to allow convenient analysis and transformation. Most notably, they may contain circular references (for representing related types and indexes). Therefor, these types are mutable, and care has to be taken when modifying them, for example by cloning them using cloneSchema.

When adding or removing a type, it is important to also update all referring fields or indexes, otherwise other transformations or the rendering process might break.

Usage

Basic example:

const parser = DefaultParser.create(DatabaseType.mongo)
const model = parser.parse(datamodelAsString)

// Do something with the model
for (const type of model.types) {
  console.log(
    `${type.name} has ${type.fields.length} fields and ${
      type.indices.length
    } indexes`,
  )
}

const enableDatamodel1_1 = true
const renderer = DefaultRenderer.create(
  DatabaseType.postgres,
  enableDatamodel1_1,
)

const renderedAsString = renderer.render(model)
版本列表
1.36.0-alpha.11 2019-06-14
1.36.0-alpha.10 2019-06-13
1.36.0-alpha.9 2019-06-10
1.36.0-alpha.8 2019-06-08
1.36.0-alpha.7 2019-06-08
1.36.0-alpha.6 2019-06-08
1.36.0-alpha.5 2019-06-08
1.36.0-alpha.4 2019-06-07
1.36.0-alpha.3 2019-06-07
1.36.0-alpha.2 2019-06-07
1.36.0-alpha.1 2019-06-06
1.36.0-test.2 2019-06-08
1.36.0-test.1 2019-06-08
1.35.0-beta 2019-05-29
1.35.0-alpha.2 2019-05-28
1.35.0-alpha.1 2019-05-28
1.34.12 2021-01-12
1.34.11 2021-01-12
1.34.10 2019-10-14
1.34.8 2019-08-29
1.34.7 2019-08-26
1.34.6 2019-08-20
1.34.5 2019-08-09
1.34.3 2019-07-24
1.34.2 2019-07-19
1.34.1 2019-07-07
1.34.0-beta.1 2019-05-28
1.34.0-beta 2019-05-15
1.34.0-alpha.2 2019-05-08
1.34.0-alpha.1 2019-05-07
1.34.0 2019-05-29
1.33.0-beta.4 2019-05-15
1.33.0-beta.3 2019-05-14
1.33.0-beta.2 2019-05-07
1.33.0-beta.1 2019-05-02
1.33.0-beta 2019-04-30
1.33.0-alpha.3 2019-04-30
1.33.0-alpha.2 2019-04-29
1.33.0-alpha.1 2019-04-23
1.33.0 2019-05-15
1.32.2 2019-05-03
1.32.1 2019-05-03
1.32.0-beta.3 2019-04-30
1.32.0-beta.2 2019-04-30
1.32.0-beta.1 2019-04-29
1.32.0-beta 2019-04-17
1.32.0-alpha.6 2019-04-17
1.32.0-alpha.5 2019-04-17
1.32.0-alpha.4 2019-04-16
1.32.0-alpha.3 2019-04-12
1.32.0-alpha.2 2019-04-11
1.32.0-alpha.1 2019-04-09
1.32.0 2019-04-30
1.31.2 2019-04-29
1.31.1 2019-04-18
1.31.0-beta.6 2019-04-17
1.31.0-beta.5 2019-04-11
1.31.0-beta.4 2019-04-11
1.31.0-beta.3 2019-04-10
1.31.0-beta.2 2019-04-08
1.31.0-beta.1 2019-04-04
1.31.0-beta 2019-04-04
1.31.0-alpha.6 2019-04-04
1.31.0-alpha.5 2019-04-03
1.31.0-alpha.4 2019-04-03
1.31.0-alpha.3 2019-03-22
1.31.0-alpha.2 2019-03-22
1.31.0-alpha.1 2019-03-21
1.31.0 2019-04-17
1.30.5 2019-07-23
1.30.4 2019-05-03
1.30.3 2019-05-03
1.30.2 2019-04-25
1.30.1 2019-04-11
1.30.0-beta.11 2019-04-03
1.30.0-beta.10 2019-04-03
1.30.0-beta.9 2019-04-02
1.30.0-beta.8 2019-04-01
1.30.0-beta.7 2019-04-01
1.30.0-beta.6 2019-03-29
1.30.0-beta.5 2019-03-29
1.30.0-beta.4 2019-03-29
1.30.0-beta.3 2019-03-22
1.30.0-beta.2 2019-03-21
1.30.0-beta.1 2019-03-20
1.30.0-beta 2019-03-20
1.30.0-alpha.4 2019-03-15
1.30.0-alpha.3 2019-03-15
1.30.0-alpha.2 2019-03-15
1.30.0-alpha.1 2019-03-14
1.30.0 2019-04-04
1.29.2 2019-03-27
1.29.1 2019-03-21
1.29.0-beta.11 2019-03-19
1.29.0-beta.10 2019-03-19
1.29.0-beta.9 2019-03-15
1.29.0-beta.8 2019-03-15
1.29.0-beta.7 2019-03-13
1.29.0-beta.6 2019-03-13
1.29.0-beta.5 2019-03-13
1.29.0-beta.4 2019-03-12
1.29.0-beta.3 2019-03-12
1.29.0-beta.2 2019-03-12
1.29.0-beta.1 2019-03-11
1.29.0-beta 2019-03-06
1.29.0-alpha.8 2019-03-05
1.29.0-alpha.7 2019-03-02
1.29.0-alpha.6 2019-02-27
1.29.0-alpha.5 2019-02-24
1.29.0-alpha.4 2019-02-24
1.29.0-alpha.3 2019-02-23
1.29.0-alpha.2 2019-02-23
1.29.0-alpha.1 2019-02-22
1.29.0 2019-03-20
1.28.5 2019-03-15
1.28.4 2019-03-15
1.28.3 2019-03-11
1.28.2 2019-03-10
1.28.1 2019-03-07
1.28.0-beta.7 2019-03-05
1.28.0-beta.6 2019-03-05
1.28.0-beta.5 2019-03-05
1.28.0-beta.4 2019-03-04
1.28.0-beta.3 2019-03-02
1.28.0-beta.2 2019-03-02
1.28.0-beta.1 2019-03-02
1.28.0-beta 2019-02-21
1.28.0-alpha.13 2019-02-21
1.28.0-alpha.12 2019-02-21
1.28.0-alpha.11 2019-02-20
1.28.0-alpha.10 2019-02-20
1.28.0-alpha.9 2019-02-15
1.28.0-alpha.8 2019-02-11
1.28.0-alpha.7 2019-02-08
1.28.0-alpha.6 2019-02-08
1.28.0-alpha.5 2019-02-08
1.28.0-alpha.4 2019-02-08
1.28.0-alpha.3 2019-02-07
1.28.0-alpha.2 2019-02-07
1.28.0-alpha.1 2019-02-06
1.28.0 2019-03-05
1.27.4 2019-03-01
1.27.3 2019-02-26
1.27.2 2019-02-26
1.27.1 2019-02-23
1.27.0-beta.14 2019-02-21
1.27.0-beta.13 2019-02-21
1.27.0-beta.12 2019-02-20
1.27.0-beta.11 2019-02-20
1.27.0-beta.10 2019-02-19
1.27.0-beta.9 2019-02-15
1.27.0-beta.8 2019-02-15
1.27.0-beta.7 2019-02-15
1.27.0-beta.6 2019-02-15
1.27.0-beta.5 2019-02-12
1.27.0-beta.4 2019-02-07
1.27.0-beta.3 2019-02-07
1.27.0-beta.2 2019-02-07
1.27.0-beta.1 2019-02-07
1.27.0-beta 2019-02-05
1.27.0-alpha.32 2019-02-06
1.27.0-alpha.31 2019-02-06
1.27.0-alpha.30 2019-02-06
1.27.0-alpha.29 2019-02-06
1.27.0-alpha.28 2019-02-06
1.27.0-alpha.27 2019-02-06
1.27.0-alpha.26 2019-02-06
1.27.0-alpha.25 2019-02-05
1.27.0-alpha.24 2019-02-05
1.27.0-alpha.23 2019-02-05
1.27.0-alpha.22 2019-02-05
1.27.0-alpha.21 2019-02-04
1.27.0-alpha.20 2019-02-04
1.27.0-alpha.19 2019-02-04
1.27.0-alpha.18 2019-02-04
1.27.0-alpha.17 2019-02-04
1.27.0-alpha.16 2019-02-04
1.27.0-alpha.15 2019-02-04
1.27.0-alpha.14 2019-02-04
1.27.0-alpha.13 2019-02-04
1.27.0-alpha.12 2019-02-04
1.27.0-alpha.11 2019-01-31
1.27.0-alpha.10 2019-01-30
1.27.0-alpha.9 2019-01-29
1.27.0-alpha.8 2019-01-29
1.27.0-alpha.7 2019-01-28
1.27.0-alpha.6 2019-01-24
1.27.0-alpha.5 2019-01-24
1.27.0-alpha.4 2019-01-24
1.27.0-alpha.3 2019-01-24
1.27.0-alpha.2 2019-01-24
1.27.0-alpha.1 2019-01-24
1.27.0 2019-02-21
1.26.6 2019-02-15
1.26.5 2019-02-13
1.26.4 2019-02-08
1.26.3 2019-02-07
1.26.2 2019-02-07
1.26.1 2019-02-06
1.26.0-beta.19 2019-02-06
1.26.0-beta.18 2019-02-06
1.26.0-beta.17 2019-02-06
1.26.0-beta.16 2019-02-06
1.26.0-beta.15 2019-02-06
1.26.0-beta.14 2019-02-06
1.26.0-beta.13 2019-02-06
1.26.0-beta.12 2019-02-06
1.26.0-beta.11 2019-02-06
1.26.0-beta.10 2019-02-06
1.26.0-beta.9 2019-02-06
1.26.0-beta.8 2019-02-06
1.26.0-beta.7 2019-02-05
1.26.0-beta.6 2019-02-05
1.26.0-beta.5 2019-02-05
1.26.0-beta.4 2019-02-05
1.26.0-beta.3 2019-01-28
1.26.0-beta.2 2019-01-25
1.26.0-beta.1 2019-01-23
1.26.0-alpha.11 2019-01-22
1.26.0-alpha.10 2019-01-22
1.26.0-alpha.9 2019-01-22
1.26.0-alpha.8 2019-01-22
1.26.0-alpha.7 2019-01-21
1.26.0-alpha.6 2019-01-21
1.26.0-alpha.5 2019-01-18
1.26.0-alpha.4 2019-01-16
1.26.0-alpha.3 2019-01-11
1.26.0-alpha.2 2019-01-11
1.26.0-alpha.1 2019-01-11
1.26.0 2019-02-05
1.25.7 2019-02-02
1.25.6 2019-02-01
1.25.5 2019-02-01
1.25.4 2019-01-28
1.25.3 2019-01-24
1.25.2 2019-01-24
1.25.1 2019-01-23
1.25.0-beta.33 2019-01-22
1.25.0-beta.32 2019-01-22
1.25.0-beta.31 2019-01-22
1.25.0-beta.30 2019-01-22
1.25.0-beta.29 2019-01-22
1.25.0-beta.28 2019-01-21
1.25.0-beta.27 2019-01-21
1.25.0-beta.26 2019-01-21
1.25.0-beta.25 2019-01-18
1.25.0-beta.24 2019-01-18
1.25.0-beta.23 2019-01-15
1.25.0-beta.22 2019-01-15
1.25.0-beta.21 2019-01-15
1.25.0-beta.20 2019-01-14
1.25.0-beta.19 2019-01-14
1.25.0-beta.18 2019-01-11
1.25.0-beta.17 2019-01-11
1.25.0-beta.16 2019-01-11
1.25.0-beta.15 2019-01-11
1.25.0-beta.14 2019-01-11
1.25.0-beta.13 2019-01-11
1.25.0-beta.12 2019-01-11
1.25.0-beta.11 2019-01-10
1.25.0-beta.10 2019-01-10
1.25.0-beta.9 2019-01-10
1.25.0-beta.8 2019-01-10
1.25.0-beta.7 2019-01-10
1.25.0-beta.6 2019-01-10
1.25.0-beta.5 2019-01-10
1.25.0-beta.4 2019-01-10
1.25.0-beta.3 2019-01-09
1.25.0-beta.2 2019-01-09
1.25.0-beta.1 2019-01-09
1.25.0-alpha.4 2019-01-08
1.25.0-alpha.3 2019-01-08
1.25.0-alpha.2 2019-01-08
1.25.0-alpha.1 2018-12-21
1.25.0 2019-01-22
1.24.0-beta.10 2019-01-09
1.24.0-beta.9 2019-01-08
1.24.0-beta.8 2019-01-08
1.24.0-beta.7 2018-12-21
1.24.0-beta.6 2018-12-21
1.24.0-beta.5 2018-12-21
1.24.0-beta.4 2018-12-19
1.24.0-beta.3 2018-12-19
1.24.0-beta.2 2018-12-19
1.24.0-beta.1 2018-12-19
1.24.0-alpha.5 2018-12-18
1.24.0-alpha.4 2018-12-18
1.24.0-alpha.3 2018-12-18
1.24.0-alpha.2 2018-12-07
1.24.0-alpha.1 2018-12-05
1.24.0 2019-01-09
1.24.0-test.1 2018-12-07
1.23.4 2019-01-04
1.23.3 2019-01-03
1.23.2 2018-12-21
1.23.1 2018-12-19
1.23.0-beta.20 2018-12-18
1.23.0-beta.19 2018-12-18
1.23.0-beta.18 2018-12-18
1.23.0-beta.17 2018-12-18
1.23.0-beta.16 2018-12-18
1.23.0-beta.15 2018-12-18
1.23.0-beta.14 2018-12-18
1.23.0-beta.13 2018-12-18
1.23.0-beta.12 2018-12-17
1.23.0-beta.11 2018-12-17
1.23.0-beta.10 2018-12-17
1.23.0-beta.9 2018-12-13
1.23.0-beta.8 2018-12-13
1.23.0-beta.7 2018-12-11
1.23.0-beta.6 2018-12-11
1.23.0-beta.5 2018-12-10
1.23.0-beta.4 2018-12-07
1.23.0-beta.3 2018-12-05
1.23.0-beta.2 2018-12-04
1.23.0-beta.1 2018-12-04
1.23.0-alpha.191 2018-12-04
1.23.0-alpha.190 2018-12-04
1.23.0-alpha.189 2018-12-04
1.23.0-alpha.188 2018-12-04
1.23.0-alpha.187 2018-12-04
1.23.0-alpha.186 2018-12-04
1.23.0-alpha.185 2018-12-04
1.23.0-alpha.184 2018-12-04
1.23.0-alpha.183 2018-12-04
1.23.0-alpha.182 2018-12-04
1.23.0-alpha.181 2018-12-04
1.23.0-alpha.180 2018-11-30
1.23.0-alpha.179 2018-11-27
1.23.0-alpha.178 2018-11-27
1.23.0-alpha.177 2018-11-27
1.23.0-alpha.176 2018-11-27
1.23.0-alpha.175 2018-11-27
1.23.0-alpha.174 2018-11-27
1.23.0-alpha.173 2018-11-27
1.23.0-alpha.172 2018-11-27
1.23.0-alpha.171 2018-11-27
1.23.0-alpha.170 2018-11-27
1.23.0-alpha.169 2018-11-27
1.23.0-alpha.168 2018-11-27
1.23.0-alpha.167 2018-11-27
1.23.0-alpha.166 2018-11-27
1.23.0-alpha.1 2018-11-23
1.23.0 2018-12-18
1.22.0-beta.17 2018-12-04