{"id":14155448,"url":"https://github.com/unlight/prisma-nestjs-graphql","last_synced_at":"2025-05-14T10:14:14.467Z","repository":{"id":40409226,"uuid":"282688579","full_name":"unlight/prisma-nestjs-graphql","owner":"unlight","description":"Generate object types, inputs, args, etc. from prisma schema file for usage with @nestjs/graphql module","archived":false,"fork":false,"pushed_at":"2025-01-26T08:37:33.000Z","size":1864,"stargazers_count":552,"open_issues_count":88,"forks_count":81,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-13T06:15:01.097Z","etag":null,"topics":["graphql","nestjs","nestjs-graphql","prisma","prisma-generator","prisma-nestjs-graphql"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unlight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-26T16:25:30.000Z","updated_at":"2025-04-09T23:56:04.000Z","dependencies_parsed_at":"2023-01-31T19:16:03.611Z","dependency_job_id":"56f8666c-fa08-47ee-a093-8f7cc4be56bb","html_url":"https://github.com/unlight/prisma-nestjs-graphql","commit_stats":null,"previous_names":["unlight/nestjs-graphql-prisma"],"tags_count":120,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlight%2Fprisma-nestjs-graphql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlight%2Fprisma-nestjs-graphql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlight%2Fprisma-nestjs-graphql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlight%2Fprisma-nestjs-graphql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unlight","download_url":"https://codeload.github.com/unlight/prisma-nestjs-graphql/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670434,"owners_count":21142904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graphql","nestjs","nestjs-graphql","prisma","prisma-generator","prisma-nestjs-graphql"],"created_at":"2024-08-17T08:03:20.272Z","updated_at":"2025-04-13T06:15:12.109Z","avatar_url":"https://github.com/unlight.png","language":"TypeScript","funding_links":[],"categories":["nestjs","TypeScript"],"sub_categories":[],"readme":"# prisma-nestjs-graphql\n\nGenerate object types, inputs, args, etc. from prisma schema file for usage with @nestjs/graphql module.\n\n## Features\n\n- Generates only necessary imports\n- Combines zoo of nested/nullable filters\n- Does not generate resolvers, since it's application specific\n\n## Install\n\n```\nnpm install --save-dev prisma-nestjs-graphql\n```\n\n## Usage\n\n1. Add new generator section to `schema.prisma` file\n\n```prisma\ngenerator nestgraphql {\n    provider = \"node node_modules/prisma-nestjs-graphql\"\n    // for yarn monorepos\n    // provider = \"prisma-nestjs-graphql\"\n    output = \"../src/@generated\"\n}\n```\n\n2. Run prisma generate\n\n```sh\nnpx prisma generate\n```\n\n3. If your models have `Decimal` and `Json` types, you need install:\n\n```sh\nnpm install graphql-type-json prisma-graphql-type-decimal\n\n```\n\n- [graphql-type-json](https://github.com/taion/graphql-type-json)\n- [prisma-graphql-type-decimal](https://github.com/unlight/prisma-graphql-type-decimal)\n\nOr write you own graphql scalar types, [read more on docs.nestjs.com](https://docs.nestjs.com/graphql/scalars).\n\n## Generator options\n\n#### `output`\n\nOutput folder relative to this schema file  \nType: `string`\n\n#### `outputFilePattern`\n\nFile path and name pattern  \nType: `string`  \nDefault: `{model}/{name}.{type}.ts`  \nPossible tokens:\n\n- `{model}` Model name in dashed case or 'prisma' if unknown\n- `{name}` Dashed-case name of model/input/arg without suffix\n- `{type}` Short type name (model, input, args, output)\n- `{plural.type}` Plural short type name (models, inputs, enums)\n\n#### `tsConfigFilePath`\n\nPath to `tsconfig.json` (absolute path or relative to current working directory)  \nType: `string | undefined`  \nDefault: `tsconfig.json` if exists, `undefined` otherwise\n\n#### `prismaClientImport`\n\nThe path to use to import the Prisma Client package\nType: `string | undefined`\nDefault: `@prisma/client`\n\n#### `combineScalarFilters`\n\nCombine nested/nullable scalar filters to single  \nType: `boolean`  \nDefault: `false`\n\n#### `noAtomicOperations`\n\nRemove input types for atomic operations  \nType: `boolean`  \nDefault: `false`\n\n#### `reExport`\n\nCreate `index.ts` file with re-export  \nType: `enum`  \nValues:  \n`None` Default, create nothing  \n`Directories` Create index file in all root directories  \n`Single` Create single index file in output directory  \n`All` Create index file in all root directories and in output directory\n\nExample configuration:\n\n```prisma\ngenerator nestgraphql {\n    provider = \"node node_modules/prisma-nestjs-graphql\"\n    output = \"../src/@generated\"\n    reExport = Directories\n}\n```\n\n#### `emitSingle`\n\nGenerate single file with merged classes and enums.  \nType: `boolean`  \nDefault: `false`\n\n#### `emitCompiled`\n\nEmit compiled JavaScript and definitions instead of TypeScript sources,\nfiles will be compiled with `emitDecoratorMetadata:false`, because there is a problem\nwith temporal dead zone when generating merged file.  \nType: `boolean`  \nDefault: `false`\n\n#### `emitBlocks`\n\nEmit only selected blocks. Be aware, that some blocks do depend on others, e.g. one can't emit `models` without emitting `enums`.  \nType: `(\"args\" | \"inputs\" | \"outputs\" | \"models\" | \"enums\")[]`  \nDefault: `[\"args\", \"inputs\", \"outputs\", \"models\", \"enums\"]`\n\n#### `omitModelsCount`\n\nOmit `_count` field from models.  \nType: `boolean`  \nDefault: `false`\n\n#### `purgeOutput`\n\nDelete all files in `output` folder.  \nType: `boolean`  \nDefault: `false`\n\n#### `noTypeId`\n\nDisable usage of graphql `ID` type and use `Int/Float` for fields marked as `@id` in schema.  \nType: `boolean`  \nDefault: `false`\n\n#### `requireSingleFieldsInWhereUniqueInput`\n\nWhen a model `*WhereUniqueInput` class has only a single field, mark that field as **required** (TypeScript) and **not nullable** (GraphQL).  \nSee [#58](https://github.com/unlight/prisma-nestjs-graphql/issues/58) for more details.  \nType: `boolean`  \nDefault: `false`  \n**Note**: It will break compatiblity between Prisma types and generated classes.\n\n#### `unsafeCompatibleWhereUniqueInput`\n\nSet TypeScript property type as non optional for all fields in `*WhereUniqueInput` classes.\nSee [#177](https://github.com/unlight/prisma-nestjs-graphql/issues/177) for more details.  \nType: `boolean`  \nDefault: `false`\n\n#### `useInputType`\n\nSince GraphQL does not support input union type, this setting map\nallow to choose which input type is preferable.\n\n```sh\ngenerator nestgraphql {\n    useInputType_{typeName}_{property} = \"{pattern}\"\n}\n```\n\nWhere:\n\n- `typeName` Full name or partial name of the class where need to choose input type.  \n  Example: `UserCreateInput` full name, `WhereInput` partial name, matches `UserWhereInput`, `PostWhereInput`, etc.\n- `property` Property of the class for which need to choose type. Special case name `ALL` means any / all properties.\n- `pattern` Part of name (or full) of type which should be chosen, you can use\n  wild card or negate symbols, in this case pattern should starts with `match:`,\n  e.g. `match:*UncheckedCreateInput` see [outmatch](https://github.com/axtgr/outmatch#usage) for details.\n\nExample:\n\n```ts\nexport type PostWhereInput = {\n  author?: XOR\u003cUserRelationFilter, UserWhereInput\u003e;\n};\nexport type UserRelationFilter = {\n  is?: UserWhereInput;\n  isNot?: UserWhereInput;\n};\n\nexport type UserWhereInput = {\n  AND?: Enumerable\u003cUserWhereInput\u003e;\n  OR?: Enumerable\u003cUserWhereInput\u003e;\n  NOT?: Enumerable\u003cUserWhereInput\u003e;\n  id?: StringFilter | string;\n  name?: StringFilter | string;\n};\n```\n\nWe have generated types above, by default property `author` will be decorated as `UserRelationFilter`,\nto set `UserWhereInput` need to configure generator the following way:\n\n```prisma\ngenerator nestgraphql {\n  provider = \"node node_modules/prisma-nestjs-graphql\"\n  output = \"../src/@generated\"\n  useInputType_WhereInput_ALL = \"WhereInput\"\n}\n```\n\n```ts\n@InputType()\nexport class PostWhereInput {\n  @Field(() =\u003e UserWhereInput, { nullable: true })\n  author?: UserWhereInput;\n}\n```\n\n#### `decorate`\n\nAllow to attach multiple decorators to any field of any type.\n\n```sh\ngenerator nestgraphql {\n    decorate_{key}_type = \"outmatch pattern\"\n    decorate_{key}_field = \"outmatch pattern\"\n    decorate_{key}_from = \"module specifier\"\n    decorate_{key}_name = \"import name\"\n    decorate_{key}_arguments = \"[argument1, argument2]\"\n    decorate_{key}_defaultImport = \"default import name\" | true\n    decorate_{key}_namespaceImport = \"namespace import name\"\n    decorate_{key}_namedImport = \"import name\" | true\n}\n```\n\nWhere `{key}` any identifier to group values (written in [flatten](https://github.com/hughsk/flat) style)\n\n- `decorate_{key}_type` - outmatch pattern to match class name\n- `decorate_{key}_field` - outmatch pattern to match field name\n- `decorate_{key}_from` - module specifier to import from (e.g `class-validator`)\n- `decorate_{key}_name` - import name or name with namespace\n- `decorate_{key}_defaultImport` - import as default\n- `decorate_{key}_namespaceImport` - use this name as import namespace\n- `decorate_{key}_namedImport` - named import (without namespace)\n- `decorate_{key}_arguments` - arguments for decorator (if decorator need to be called as function)  \n  Special tokens can be used:\n  - `{propertyType.0}` - field's type (TypeScript type annotation)\n\nExample of generated class:\n\n```ts\n@ArgsType()\nexport class CreateOneUserArgs {\n  @Field(() =\u003e UserCreateInput, { nullable: false })\n  data!: UserCreateInput;\n}\n```\n\nTo make it validateable (assuming `UserCreateInput` already contains validation decorators from `class-validator`),\nit is necessary to add `@ValidateNested()` and `@Type()` from `class-transformer`.\n\n```sh\ndecorate_1_type = \"CreateOneUserArgs\"\ndecorate_1_field = data\ndecorate_1_name = ValidateNested\ndecorate_1_from = \"class-validator\"\ndecorate_1_arguments = \"[]\"\ndecorate_2_type = \"CreateOneUserArgs\"\ndecorate_2_field = data\ndecorate_2_from = \"class-transformer\"\ndecorate_2_arguments = \"['() =\u003e {propertyType.0}']\"\ndecorate_2_name = Type\n```\n\nResult:\n\n```ts\nimport { ValidateNested } from 'class-validator';\nimport { Type } from 'class-transformer';\n\n@ArgsType()\nexport class CreateOneUserArgs {\n  @Field(() =\u003e UserCreateInput, { nullable: false })\n  @ValidateNested()\n  @Type(() =\u003e UserCreateInput)\n  data!: UserCreateInput;\n}\n```\n\nAnother example:\n\n```sh\ndecorate_2_namespaceImport = \"Transform\"\ndecorate_2_name = \"Transform.Type\"\n```\n\n```ts\nimport * as Transform from 'class-transformer';\n\n@Transform.Type(() =\u003e UserCreateInput)\ndata!: UserCreateInput;\n\n```\n\nAdd `@HideField()` decorator to nested types:\n\n```\ndecorate_3_type = \"*CreateNestedOneWithoutUserInput\"\ndecorate_3_field = \"!(create)\"\ndecorate_3_name = \"HideField\"\ndecorate_3_from = \"@nestjs/graphql\"\ndecorate_3_arguments = \"[]\"\n```\n\nMay generate following class:\n\n```ts\n@Field(() =\u003e ProfileCreateWithoutUserInput, { nullable: true })\ncreate?: ProfileCreateWithoutUserInput;\n\n@HideField()\nconnectOrCreate?: ProfileCreateOrConnectWithoutUserInput;\n\n@HideField()\nconnect?: ProfileWhereUniqueInput;\n```\n\n#### `graphqlScalars`\n\nAllow to set custom graphql type for Prisma scalar type.\nFormat:\n\n```\ngraphqlScalars_{type}_name = \"string\"\ngraphqlScalars_{type}_specifier = \"string\"\n```\n\nwhere `{type}` is a prisma scalar type name (e.g. BigInt)\n\nExample:\n\n```\ngraphqlScalars_BigInt_name = \"GraphQLBigInt\"\ngraphqlScalars_BigInt_specifier = \"graphql-scalars\"\n```\n\nMay generate:\n\n```ts\nimport { GraphQLBigInt } from 'graphql-scalars';\n\nexport class BigIntFilter {\n  @Field(() =\u003e GraphQLBigInt, { nullable: true })\n  equals?: bigint | number;\n}\n```\n\nIt will affect all inputs and outputs types (including models).\n\n#### `customImport`\n\nAllow to declare custom import statements. (Only works with emitSingle = true)\n\n```sh\ngenerator nestgraphql {\n    customImport_{key}_from = \"module specifier\"\n    customImport_{key}_name = \"import name\"\n    customImport_{key}_defaultImport = \"default import name\" | true\n    customImport_{key}_namespaceImport = \"namespace import name\"\n    customImport_{key}_namedImport = \"import name\" | true\n}\n```\n\nWhere `{key}` any identifier to group values (written in [flatten](https://github.com/hughsk/flat) style)\n\n- `customImport_{key}_from` - module specifier to import from (e.g `nestjs-i18n`)\n- `customImport_{key}_name` - import name or name with namespace\n- `customImport_{key}_defaultImport` - import as default\n- `customImport_{key}_namespaceImport` - use this name as import namespace\n- `customImport_{key}_namedImport` - named import (without namespace)\n\n## Documentation and field options\n\nComments with triple slash will projected to typescript code comments\nand some `@Field()` decorator options\n\nFor example:\n\n```prisma\nmodel Product {\n  /// Old description\n  /// @deprecated Use new name instead\n  /// @complexity 1\n  oldName String\n}\n```\n\nMay produce:\n\n```ts\n@ObjectType()\nexport class Product {\n  /**\n   * Old description\n   * @deprecated Use new name instead\n   */\n  @Field(() =\u003e String, {\n    description: 'Old description',\n    deprecationReason: 'Use new name instead',\n    complexity: 1,\n  })\n  oldName: string;\n}\n```\n\n## Field Settings\n\nSpecial directives in triple slash comments for more precise code generation.\n\n#### @HideField()\n\nRemoves field from GraphQL schema.  \nAlias: `@TypeGraphQL.omit(output: true)`\n\nBy default (without arguments) field will be decorated for hide only in output types (type in schema).  \nTo hide field in input types add `input: true`.  \nTo hide field in specific type you can use glob pattern `match: string | string[]`\nsee [outmatch](https://github.com/axtgr/outmatch#usage) for details.\n\nExamples:\n\n- `@HideField()` same as `@HideField({ output: true })`\n- `@HideField({ input: true, output: true })`\n- `@HideField({ match: 'UserCreate*Input' })`\n\n```prisma\nmodel User {\n    id String @id @default(cuid())\n    /// @HideField()\n    password String\n    /// @HideField({ output: true, input: true })\n    secret String\n    /// @HideField({ match: '@(User|Comment)Create*Input' })\n    createdAt DateTime @default(now())\n}\n```\n\nMay generate classes:\n\n```ts\n@ObjectType()\nexport class User {\n  @HideField()\n  password: string;\n  @HideField()\n  secret: string;\n  @Field(() =\u003e Date, { nullable: false })\n  createdAt: Date;\n}\n```\n\n```ts\n@InputType()\nexport class UserCreateInput {\n  @Field()\n  password: string;\n  @HideField()\n  secret: string;\n  @HideField()\n  createdAt: Date;\n}\n```\n\n#### Custom Decorators\n\nApplying custom decorators requires configuration of generator.\n\n```sh\ngenerator nestgraphql {\n    fields_{namespace}_from = \"module specifier\"\n    fields_{namespace}_input = true | false\n    fields_{namespace}_output = true | false\n    fields_{namespace}_model = true | false\n    fields_{namespace}_defaultImport = \"default import name\" | true\n    fields_{namespace}_namespaceImport = \"namespace import name\"\n    fields_{namespace}_namedImport = true | false\n}\n```\n\nCreate configuration map in [flatten](https://github.com/hughsk/flat) style for `{namespace}`.  \nWhere `{namespace}` is a namespace used in field triple slash comment.\n\n##### `fields_{namespace}_from`\n\nRequired. Name of the module, which will be used in import (`class-validator`, `graphql-scalars`, etc.)  \nType: `string`\n\n##### `fields_{namespace}_input`\n\nMeans that it will be applied on input types (classes decorated by `InputType`)  \nType: `boolean`  \nDefault: `false`\n\n##### `fields_{namespace}_output`\n\nMeans that it will be applied on output types (classes decorated by `ObjectType`),\nincluding models  \nType: `boolean`  \nDefault: `false`\n\n##### `fields_{namespace}_model`\n\nMeans that it will be applied only on model types (classes decorated by `ObjectType`)  \nType: `boolean`  \nDefault: `false`\n\n##### `fields_{namespace}_defaultImport`\n\nDefault import name, if module have no namespace.  \nType: `undefined | string | true`  \nDefault: `undefined`  \nIf defined as `true` then import name will be same as `{namespace}`\n\n##### `fields_{namespace}_namespaceImport`\n\nImport all as this namespace from module  \nType: `undefined | string`  \nDefault: Equals to `{namespace}`\n\n##### `fields_{namespace}_namedImport`\n\nIf imported module has internal namespace, this allow to generate named import,  \nimported name will be equal to `{namespace}`, see [example of usage](#propertytype)  \nType: `boolean`  \nDefault: `false`\n\nCustom decorators example:\n\n```prisma\ngenerator nestgraphql {\n    fields_Validator_from = \"class-validator\"\n    fields_Validator_input = true\n}\n\nmodel User {\n    id Int @id\n    /// @Validator.MinLength(3)\n    name String\n}\n```\n\nMay generate following class:\n\n```ts\nimport { InputType, Field } from '@nestjs/graphql';\nimport * as Validator from 'class-validator';\n\n@InputType()\nexport class UserCreateInput {\n  @Field(() =\u003e String, { nullable: false })\n  @Validator.MinLength(3)\n  name!: string;\n}\n```\n\nCustom decorators can be applied on classes (models):\n\n```\n/// @NG.Directive('@extends')\n/// @NG.Directive('@key(fields: \"id\")')\nmodel User {\n    /// @NG.Directive('@external')\n    id String @id\n}\n\ngenerator nestgraphql {\n    fields_NG_from = \"@nestjs/graphql\"\n    fields_NG_output = false\n    fields_NG_model = true\n}\n```\n\nMay generate:\n\n```ts\nimport * as NG from '@nestjs/graphql';\n\n@NG.Directive('@extends')\n@NG.Directive('@key(fields: \"id\")')\nexport class User {\n    @Field(() =\u003e ID, { nullable: false })\n    @NG.Directive('@external')\n    id!: string;\n```\n\n#### @FieldType()\n\nAllow set custom GraphQL scalar type for field\n\nTo override scalar type in specific classes, you can use glob pattern `match: string | string[]`\nsee [outmatch](https://github.com/axtgr/outmatch#usage) for details.\n\n```prisma\nmodel User {\n    id Int @id\n    /// @FieldType({ name: 'Scalars.GraphQLEmailAddress', from: 'graphql-scalars', input: true })\n    email String\n}\n```\n\nMay generate following class:\n\n```ts\nimport { InputType, Field } from '@nestjs/graphql';\nimport * as Scalars from 'graphql-scalars';\n\n@InputType()\nexport class UserCreateInput {\n  @Field(() =\u003e Scalars.GraphQLEmailAddress, { nullable: false })\n  email!: string;\n}\n```\n\nAnd following GraphQL schema:\n\n```grapqhl\nscalar EmailAddress\n\ninput UserCreateInput {\n    email: EmailAddress!\n}\n```\n\nSame field type may be used in different models and it is not convenient to specify every time all options.\nThere is a shortcut:\n\n```grapqhl\ngenerator nestgraphql {\n    fields_Scalars_from = \"graphql-scalars\"\n    fields_Scalars_input = true\n    fields_Scalars_output = true\n}\n\nmodel User {\n    id Int @id\n    /// @FieldType('Scalars.GraphQLEmailAddress')\n    email String\n}\n```\n\nThe result will be the same. `Scalars` is the namespace here.\nMissing field options will merged from generator configuration.\n\n#### @PropertyType()\n\nSimilar to `@FieldType()` but refer to TypeScript property (actually field too).\n\nTo override TypeScript type in specific classes, you can use glob pattern `match: string | string[]`\nsee [outmatch](https://github.com/axtgr/outmatch#usage) for details.\n\nExample:\n\n```\ngenerator nestgraphql {\n    fields_TF_from = \"type-fest\"\n}\n\nmodel User {\n    id String @id\n    /// @PropertyType('TF.JsonObject')\n    data Json\n}\n```\n\nMay generate:\n\n```ts\nimport * as TF from 'type-fest';\n\n@ObjectType()\nexport class User {\n  @Field(() =\u003e GraphQLJSON)\n  data!: TF.JsonObject;\n}\n```\n\n### @Directive()\n\nAllow attach `@Directive` decorator from `@nestjs/graphql`\n\nGraphQL federation example:\n\n```\n/// @Directive({ arguments: ['@extends'] })\n/// @Directive({ arguments: ['@key(fields: \"id\")'] })\nmodel User {\n    /// @Directive({ arguments: ['@external'] })\n    id String @id\n}\n```\n\nMay generate:\n\n```ts\n@ObjectType()\n@Directive('@extends')\n@Directive('@key(fields: \"id\")')\nexport class User {\n  @Field(() =\u003e ID, { nullable: false })\n  @Directive('@external')\n  id!: string;\n}\n```\n\n#### @ObjectType()\n\nAllow rename type in schema and mark as abstract.\n\nExample 1:\n\n```\n// schema.prisma\n/// @ObjectType({ isAbstract: true })\nmodel User {\n    id Int @id\n}\n```\n\n```ts\n@ObjectType({ isAbstract: true })\nexport class User {}\n```\n\nExample 2:\n\n```\n// schema.prisma\n/// @ObjectType('Human', { isAbstract: true })\nmodel User {\n    id Int @id\n}\n```\n\n```ts\n@ObjectType('Human', { isAbstract: true })\nexport class User {}\n```\n\n### Using library in other generators\n\n```ts\nimport { generate } from 'prisma-nestjs-graphql/generate';\n```\n\n## Similar Projects\n\n- \u003chttps://github.com/jasonraimondi/prisma-generator-nestjs-graphql\u003e\n- \u003chttps://github.com/omar-dulaimi/prisma-class-validator-generator\u003e\n- \u003chttps://github.com/kimjbstar/prisma-class-generator\u003e\n- \u003chttps://github.com/odroe/nest-gql-mix\u003e\n- \u003chttps://github.com/rfermann/nestjs-prisma-graphql-generator\u003e\n- \u003chttps://github.com/madscience/graphql-codegen-nestjs\u003e\n- \u003chttps://github.com/wSedlacek/prisma-generators/tree/master/libs/nestjs\u003e\n- \u003chttps://github.com/EndyKaufman/typegraphql-prisma-nestjs\u003e\n- \u003chttps://github.com/MichalLytek/typegraphql-prisma\u003e\n- \u003chttps://github.com/mk668a/nestjs-prisma-graphql-crud-gen\u003e\n\n## Resources\n\n- Todo - \u003chttps://github.com/unlight/prisma-nestjs-graphql/issues/2\u003e\n- \u003chttps://github.com/prisma/prisma/blob/main/packages/client/src/generation/TSClient/TSClient.ts\u003e\n- \u003chttps://ts-ast-viewer.com/\u003e\n- \u003chttps://github.com/unlight/nestjs-graphql-prisma-realworld-example-app\u003e\n- \u003chttps://www.prisma.io/docs/reference/tools-and-interfaces/prisma-schema/data-model\u003e\n- JSON type for the code first approach - \u003chttps://github.com/nestjs/graphql/issues/111#issuecomment-631452899\u003e\n- \u003chttps://github.com/paljs/prisma-tools/tree/master/packages/plugins\u003e\n- \u003chttps://github.com/wasp-lang/wasp\u003e\n\n## TODO\n\n- keyof typeof SortOrder -\u003e `SortOrder`\n- dummy-createfriends.input.ts -\u003e `create-friends`\n- check 'TODO FIXME'\n- 22.12 node require esm (update all deps to latest)\n\n## License\n\n[MIT License](https://opensource.org/licenses/MIT) (c) 2025\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funlight%2Fprisma-nestjs-graphql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funlight%2Fprisma-nestjs-graphql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funlight%2Fprisma-nestjs-graphql/lists"}