diff --git a/packages/orm/prisma/.gitignore b/packages/orm/prisma/.gitignore index 43001c44500..09b697c6051 100644 --- a/packages/orm/prisma/.gitignore +++ b/packages/orm/prisma/.gitignore @@ -1 +1 @@ -test/prisma/generated \ No newline at end of file +**/generated diff --git a/packages/orm/prisma/package.json b/packages/orm/prisma/package.json index 9f78a33d44c..6c4b9975f15 100644 --- a/packages/orm/prisma/package.json +++ b/packages/orm/prisma/package.json @@ -20,7 +20,8 @@ "build:cjs": "tsc --build tsconfig.compile.json", "build:esm": "tsc --build tsconfig.compile.esm.json", "test": "cross-env NODE_ENV=test yarn jest", - "generate": "cd test && prisma -v && prisma generate" + "generate:postgres": "cd test/postgres && prisma -v && prisma generate", + "generate:mongo": "cd test/mongo && prisma -v && prisma generate" }, "private": false, "dependencies": { @@ -60,4 +61,4 @@ "tsed", "prisma" ] -} \ No newline at end of file +} diff --git a/packages/orm/prisma/src/__mock__/createDmmfFixture.ts b/packages/orm/prisma/src/__mock__/createDmmfFixture.ts index f7bf5b6144a..4b48a272e0c 100644 --- a/packages/orm/prisma/src/__mock__/createDmmfFixture.ts +++ b/packages/orm/prisma/src/__mock__/createDmmfFixture.ts @@ -1,3 +1,7 @@ export function createDmmfFixture() { return require("./dmmf.json"); } + +export function createDmmfWithTypesFixture() { + return require("./dmmf.types.json"); +} diff --git a/packages/orm/prisma/src/__mock__/dmmf.types.json b/packages/orm/prisma/src/__mock__/dmmf.types.json new file mode 100644 index 00000000000..71e906cc3fd --- /dev/null +++ b/packages/orm/prisma/src/__mock__/dmmf.types.json @@ -0,0 +1,4233 @@ +{ + "datamodel": { + "enums": [], + "models": [ + { + "name": "User", + "dbName": null, + "fields": [ + { + "name": "id", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": true, + "isReadOnly": false, + "hasDefaultValue": true, + "type": "String", + "default": { + "name": "auto", + "args": [] + }, + "isGenerated": false, + "isUpdatedAt": false, + "documentation": "@TsED.Groups(\"!creation\")" + }, + { + "name": "email", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": true, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String", + "isGenerated": false, + "isUpdatedAt": false, + "documentation": "@TsED.Email()" + }, + { + "name": "info", + "kind": "object", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "Info", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "createdAt", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": true, + "type": "DateTime", + "default": { + "name": "now", + "args": [] + }, + "isGenerated": false, + "isUpdatedAt": false, + "documentation": "@TsED.Groups(\"!creation\")" + }, + { + "name": "updatedAt", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "DateTime", + "isGenerated": false, + "isUpdatedAt": true + } + ], + "primaryKey": null, + "uniqueFields": [], + "uniqueIndexes": [], + "isGenerated": false + } + ], + "types": [ + { + "name": "Info", + "dbName": null, + "fields": [ + { + "name": "firstName", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String" + }, + { + "name": "lastName", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String" + } + ], + "primaryKey": null, + "uniqueFields": [], + "uniqueIndexes": [] + } + ] + }, + "schema": { + "inputObjectTypes": { + "prisma": [ + { + "name": "UserWhereInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "AND", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "OR", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "NOT", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "StringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "StringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoCompositeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoObjectEqualityInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTimeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTimeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "UserOrderByWithRelationInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 0 + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoOrderByInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "UserWhereUniqueInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "UserOrderByWithAggregationInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 0 + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "_count", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserCountOrderByAggregateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_max", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserMaxOrderByAggregateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_min", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserMinOrderByAggregateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "UserScalarWhereWithAggregatesInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "AND", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserScalarWhereWithAggregatesInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserScalarWhereWithAggregatesInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "OR", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserScalarWhereWithAggregatesInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "NOT", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserScalarWhereWithAggregatesInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserScalarWhereWithAggregatesInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "StringWithAggregatesFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "StringWithAggregatesFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTimeWithAggregatesFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTimeWithAggregatesFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "UserCreateInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoCreateEnvelopeInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "UserUncheckedCreateInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoCreateEnvelopeInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "UserUpdateInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "StringFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoUpdateEnvelopeInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "DateTimeFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "DateTimeFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "UserUncheckedUpdateInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "StringFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoUpdateEnvelopeInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "DateTimeFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "DateTimeFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "UserCreateManyInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoCreateEnvelopeInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "UserUpdateManyMutationInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "StringFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoUpdateEnvelopeInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "DateTimeFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "DateTimeFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "UserUncheckedUpdateManyInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "StringFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "info", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoUpdateEnvelopeInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "DateTimeFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "DateTimeFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "StringFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "contains", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "startsWith", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "endsWith", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "mode", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "QueryMode", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "NestedStringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "InfoCompositeFilter", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoObjectEqualityInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "is", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "isNot", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "InfoObjectEqualityInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "firstName", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lastName", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "DateTimeFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "NestedDateTimeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "InfoOrderByInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 0 + }, + "fields": [ + { + "name": "firstName", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "lastName", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "UserCountOrderByAggregateInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "UserMaxOrderByAggregateInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "UserMinOrderByAggregateInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "id", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "email", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "createdAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "updatedAt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "SortOrder", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "StringWithAggregatesFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "contains", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "startsWith", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "endsWith", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "mode", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "QueryMode", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "NestedStringWithAggregatesFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_count", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedIntFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_min", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedStringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_max", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedStringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "DateTimeWithAggregatesFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "NestedDateTimeWithAggregatesFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_count", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedIntFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_min", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedDateTimeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_max", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedDateTimeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "InfoCreateEnvelopeInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "set", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "InfoCreateInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "firstName", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lastName", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "StringFieldUpdateOperationsInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "set", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "InfoUpdateEnvelopeInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "set", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "update", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoUpdateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "DateTimeFieldUpdateOperationsInput", + "constraints": { + "maxNumFields": 1, + "minNumFields": 1 + }, + "fields": [ + { + "name": "set", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "NestedStringFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "contains", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "startsWith", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "endsWith", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "NestedStringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "InfoWhereInput", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "AND", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "OR", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "NOT", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "InfoWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "InfoWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + }, + { + "name": "firstName", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "StringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lastName", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "StringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + } + ] + }, + { + "name": "NestedDateTimeFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "NestedDateTimeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "NestedStringWithAggregatesFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "contains", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "startsWith", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "endsWith", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "NestedStringWithAggregatesFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_count", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedIntFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_min", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedStringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_max", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedStringFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "NestedIntFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + }, + { + "type": "NestedIntFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "NestedDateTimeWithAggregatesFilter", + "constraints": { + "maxNumFields": null, + "minNumFields": null + }, + "fields": [ + { + "name": "equals", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "in", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "notIn", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "lt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "lte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gt", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "gte", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "not", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "DateTime", + "location": "scalar", + "isList": false + }, + { + "type": "NestedDateTimeWithAggregatesFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_count", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedIntFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_min", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedDateTimeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "_max", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "NestedDateTimeFilter", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + }, + { + "name": "InfoUpdateInput", + "constraints": { + "maxNumFields": null, + "minNumFields": 1 + }, + "fields": [ + { + "name": "firstName", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "StringFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "lastName", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "String", + "location": "scalar", + "isList": false + }, + { + "type": "StringFieldUpdateOperationsInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ] + } + ] + }, + "outputObjectTypes": { + "prisma": [ + { + "name": "Query", + "fields": [ + { + "name": "findFirstUser", + "args": [ + { + "name": "where", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "orderBy", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserOrderByWithRelationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + }, + { + "type": "UserOrderByWithRelationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "cursor", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereUniqueInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "take", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "skip", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "distinct", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserScalarFieldEnum", + "namespace": "prisma", + "location": "enumTypes", + "isList": true + } + ] + } + ], + "isNullable": true, + "outputType": { + "type": "User", + "namespace": "model", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "findManyUser", + "args": [ + { + "name": "where", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "orderBy", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserOrderByWithRelationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + }, + { + "type": "UserOrderByWithRelationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "cursor", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereUniqueInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "take", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "skip", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "distinct", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserScalarFieldEnum", + "namespace": "prisma", + "location": "enumTypes", + "isList": true + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "User", + "namespace": "model", + "location": "outputObjectTypes", + "isList": true + } + }, + { + "name": "aggregateUser", + "args": [ + { + "name": "where", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "orderBy", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserOrderByWithRelationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + }, + { + "type": "UserOrderByWithRelationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "cursor", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereUniqueInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "take", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "skip", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "AggregateUser", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "groupByUser", + "args": [ + { + "name": "where", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "orderBy", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserOrderByWithAggregationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + }, + { + "type": "UserOrderByWithAggregationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "by", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserScalarFieldEnum", + "namespace": "prisma", + "location": "enumTypes", + "isList": true + }, + { + "type": "UserScalarFieldEnum", + "namespace": "prisma", + "location": "enumTypes", + "isList": false + } + ] + }, + { + "name": "having", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserScalarWhereWithAggregatesInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "take", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "skip", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Int", + "location": "scalar", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "UserGroupByOutputType", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": true + } + }, + { + "name": "findUniqueUser", + "args": [ + { + "name": "where", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereUniqueInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ], + "isNullable": true, + "outputType": { + "type": "User", + "namespace": "model", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "findUserRaw", + "args": [ + { + "name": "filter", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Json", + "location": "scalar", + "isList": false + } + ] + }, + { + "name": "options", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Json", + "location": "scalar", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "Json", + "location": "scalar", + "isList": false + } + }, + { + "name": "aggregateUserRaw", + "args": [ + { + "name": "pipeline", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Json", + "location": "scalar", + "isList": true + } + ] + }, + { + "name": "options", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "Json", + "location": "scalar", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "Json", + "location": "scalar", + "isList": false + } + } + ] + }, + { + "name": "Mutation", + "fields": [ + { + "name": "createOneUser", + "args": [ + { + "name": "data", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserUncheckedCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "User", + "namespace": "model", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "upsertOneUser", + "args": [ + { + "name": "where", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereUniqueInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "create", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserUncheckedCreateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "update", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserUpdateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserUncheckedUpdateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "User", + "namespace": "model", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "createManyUser", + "args": [ + { + "name": "data", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserCreateManyInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": true + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "AffectedRowsOutput", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "deleteOneUser", + "args": [ + { + "name": "where", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereUniqueInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ], + "isNullable": true, + "outputType": { + "type": "User", + "namespace": "model", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "updateOneUser", + "args": [ + { + "name": "data", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserUpdateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserUncheckedUpdateInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "where", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereUniqueInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ], + "isNullable": true, + "outputType": { + "type": "User", + "namespace": "model", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "updateManyUser", + "args": [ + { + "name": "data", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "UserUpdateManyMutationInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + }, + { + "type": "UserUncheckedUpdateManyInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + }, + { + "name": "where", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "AffectedRowsOutput", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "deleteManyUser", + "args": [ + { + "name": "where", + "isRequired": false, + "isNullable": false, + "inputTypes": [ + { + "type": "UserWhereInput", + "namespace": "prisma", + "location": "inputObjectTypes", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "AffectedRowsOutput", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "runCommandRaw", + "args": [ + { + "name": "command", + "isRequired": true, + "isNullable": false, + "inputTypes": [ + { + "type": "Json", + "location": "scalar", + "isList": false + } + ] + } + ], + "isNullable": false, + "outputType": { + "type": "Json", + "location": "scalar", + "isList": false + } + } + ] + }, + { + "name": "AggregateUser", + "fields": [ + { + "name": "_count", + "args": [], + "isNullable": true, + "outputType": { + "type": "UserCountAggregateOutputType", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "_min", + "args": [], + "isNullable": true, + "outputType": { + "type": "UserMinAggregateOutputType", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "_max", + "args": [], + "isNullable": true, + "outputType": { + "type": "UserMaxAggregateOutputType", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + } + ] + }, + { + "name": "UserGroupByOutputType", + "fields": [ + { + "name": "id", + "args": [], + "isNullable": false, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "email", + "args": [], + "isNullable": false, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "createdAt", + "args": [], + "isNullable": false, + "outputType": { + "type": "DateTime", + "location": "scalar", + "isList": false + } + }, + { + "name": "updatedAt", + "args": [], + "isNullable": false, + "outputType": { + "type": "DateTime", + "location": "scalar", + "isList": false + } + }, + { + "name": "_count", + "args": [], + "isNullable": true, + "outputType": { + "type": "UserCountAggregateOutputType", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "_min", + "args": [], + "isNullable": true, + "outputType": { + "type": "UserMinAggregateOutputType", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "_max", + "args": [], + "isNullable": true, + "outputType": { + "type": "UserMaxAggregateOutputType", + "namespace": "prisma", + "location": "outputObjectTypes", + "isList": false + } + } + ] + }, + { + "name": "AffectedRowsOutput", + "fields": [ + { + "name": "count", + "args": [], + "isNullable": false, + "outputType": { + "type": "Int", + "location": "scalar", + "isList": false + } + } + ] + }, + { + "name": "UserCountAggregateOutputType", + "fields": [ + { + "name": "id", + "args": [], + "isNullable": false, + "outputType": { + "type": "Int", + "location": "scalar", + "isList": false + } + }, + { + "name": "email", + "args": [], + "isNullable": false, + "outputType": { + "type": "Int", + "location": "scalar", + "isList": false + } + }, + { + "name": "createdAt", + "args": [], + "isNullable": false, + "outputType": { + "type": "Int", + "location": "scalar", + "isList": false + } + }, + { + "name": "updatedAt", + "args": [], + "isNullable": false, + "outputType": { + "type": "Int", + "location": "scalar", + "isList": false + } + }, + { + "name": "_all", + "args": [], + "isNullable": false, + "outputType": { + "type": "Int", + "location": "scalar", + "isList": false + } + } + ] + }, + { + "name": "UserMinAggregateOutputType", + "fields": [ + { + "name": "id", + "args": [], + "isNullable": true, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "email", + "args": [], + "isNullable": true, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "createdAt", + "args": [], + "isNullable": true, + "outputType": { + "type": "DateTime", + "location": "scalar", + "isList": false + } + }, + { + "name": "updatedAt", + "args": [], + "isNullable": true, + "outputType": { + "type": "DateTime", + "location": "scalar", + "isList": false + } + } + ] + }, + { + "name": "UserMaxAggregateOutputType", + "fields": [ + { + "name": "id", + "args": [], + "isNullable": true, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "email", + "args": [], + "isNullable": true, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "createdAt", + "args": [], + "isNullable": true, + "outputType": { + "type": "DateTime", + "location": "scalar", + "isList": false + } + }, + { + "name": "updatedAt", + "args": [], + "isNullable": true, + "outputType": { + "type": "DateTime", + "location": "scalar", + "isList": false + } + } + ] + } + ], + "model": [ + { + "name": "User", + "fields": [ + { + "name": "id", + "args": [], + "isNullable": false, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "email", + "args": [], + "isNullable": false, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "info", + "args": [], + "isNullable": false, + "outputType": { + "type": "Info", + "namespace": "model", + "location": "outputObjectTypes", + "isList": false + } + }, + { + "name": "createdAt", + "args": [], + "isNullable": false, + "outputType": { + "type": "DateTime", + "location": "scalar", + "isList": false + } + }, + { + "name": "updatedAt", + "args": [], + "isNullable": false, + "outputType": { + "type": "DateTime", + "location": "scalar", + "isList": false + } + } + ] + }, + { + "name": "Info", + "fields": [ + { + "name": "firstName", + "args": [], + "isNullable": false, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + }, + { + "name": "lastName", + "args": [], + "isNullable": false, + "outputType": { + "type": "String", + "location": "scalar", + "isList": false + } + } + ] + } + ] + }, + "enumTypes": { + "prisma": [ + { + "name": "UserScalarFieldEnum", + "values": ["id", "email", "createdAt", "updatedAt"] + }, + { + "name": "SortOrder", + "values": ["asc", "desc"] + }, + { + "name": "QueryMode", + "values": ["default", "insensitive"] + } + ] + } + }, + "mappings": { + "modelOperations": [ + { + "model": "User", + "aggregate": "aggregateUser", + "aggregateRaw": "aggregateUserRaw", + "createMany": "createManyUser", + "createOne": "createOneUser", + "deleteMany": "deleteManyUser", + "deleteOne": "deleteOneUser", + "findFirst": "findFirstUser", + "findMany": "findManyUser", + "findRaw": "findUserRaw", + "findUnique": "findUniqueUser", + "groupBy": "groupByUser", + "updateMany": "updateManyUser", + "updateOne": "updateOneUser", + "upsertOne": "upsertOneUser" + } + ], + "otherOperations": { + "read": [], + "write": ["runCommandRaw"] + } + } +} diff --git a/packages/orm/prisma/src/generator/domain/DmmfModel.ts b/packages/orm/prisma/src/generator/domain/DmmfModel.ts index 68f4a899ad4..0955136bcb6 100644 --- a/packages/orm/prisma/src/generator/domain/DmmfModel.ts +++ b/packages/orm/prisma/src/generator/domain/DmmfModel.ts @@ -36,27 +36,26 @@ export class DmmfModel { return [...this.#imports.values()]; } - static getModels(dmmf: DMMF.Document, modelsMap: Map) { + static getModels(dmmf: DMMF.Document, modelsMap: Map, typesMap?: Map): DmmfModel[] { const inputObjectsTypes = dmmf.schema.inputObjectTypes.model || []; const outputObjectTypes = dmmf.schema.outputObjectTypes.model || []; - const inputs = inputObjectsTypes.map( - (modelType) => - new DmmfModel({ - modelType, - model: modelsMap.get(modelType.name), - isInputType: true - }) - ); - - const outputs = outputObjectTypes.map( - (modelType) => - new DmmfModel({ + const factory = (isInputType: boolean) => (modelType: DMMF.InputType | DMMF.OutputType) => { + let model = modelsMap.get(modelType.name) || typesMap?.get(modelType.name); + + if (model) { + return new DmmfModel({ modelType, - model: modelsMap.get(modelType.name), - isInputType: false - }) - ); + model, + isInputType + }); + } + + return undefined; + }; + + const inputs: DmmfModel[] = inputObjectsTypes.map(factory(true)).filter(Boolean) as DmmfModel[]; + const outputs: DmmfModel[] = outputObjectTypes.map(factory(false)).filter(Boolean) as DmmfModel[]; return [...inputs, ...outputs]; } diff --git a/packages/orm/prisma/src/generator/utils/__snapshots__/generateModels.spec.ts.snap b/packages/orm/prisma/src/generator/utils/__snapshots__/generateModels.spec.ts.snap index fa657f51f74..e596aa8cc46 100644 --- a/packages/orm/prisma/src/generator/utils/__snapshots__/generateModels.spec.ts.snap +++ b/packages/orm/prisma/src/generator/utils/__snapshots__/generateModels.spec.ts.snap @@ -1,5 +1,22 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`generateModels should generate models (info) 1`] = ` +"import { Info } from \\"../client\\"; +import { Required, Property } from \\"@tsed/schema\\"; + +export class InfoModel implements Info { + @Property(String) + @Required() + firstName: string; + + @Property(String) + @Required() + lastName: string; +} + +" +`; + exports[`generateModels should generate models (post) 1`] = ` "import { Post } from \\"../client\\"; import { Integer, Required, Property, Allow } from \\"@tsed/schema\\"; diff --git a/packages/orm/prisma/src/generator/utils/generateModels.spec.ts b/packages/orm/prisma/src/generator/utils/generateModels.spec.ts index 415bfeb65fd..4ffb410e615 100644 --- a/packages/orm/prisma/src/generator/utils/generateModels.spec.ts +++ b/packages/orm/prisma/src/generator/utils/generateModels.spec.ts @@ -1,6 +1,6 @@ import {createProjectFixture} from "../../__mock__/createProjectFixture"; import {generateModels} from "./generateModels"; -import {createDmmfFixture} from "../../__mock__/createDmmfFixture"; +import {createDmmfFixture, createDmmfWithTypesFixture} from "../../__mock__/createDmmfFixture"; describe("generateModels", () => { it("should generate models (post)", () => { @@ -19,4 +19,12 @@ describe("generateModels", () => { render("/models/UserModel.ts").toMatchSnapshot(); }); + it("should generate models (info)", () => { + const {project, render, baseDir} = createProjectFixture("generate_models"); + const dmmf = createDmmfWithTypesFixture(); + + generateModels(dmmf, project, baseDir); + + render("/models/InfoModel.ts").toMatchSnapshot(); + }); }); diff --git a/packages/orm/prisma/src/generator/utils/generateModels.ts b/packages/orm/prisma/src/generator/utils/generateModels.ts index f5270f0ba07..632604093f5 100644 --- a/packages/orm/prisma/src/generator/utils/generateModels.ts +++ b/packages/orm/prisma/src/generator/utils/generateModels.ts @@ -1,15 +1,17 @@ import {DMMF} from "@prisma/generator-helper"; -import {Project} from "ts-morph"; -import {toMap} from "@tsed/core"; +import {getValue, toMap} from "@tsed/core"; import path from "path"; +import {Project} from "ts-morph"; import {DmmfModel} from "../domain/DmmfModel"; -import {generateDocuments} from "./generateDocuments"; import {transformModelToClass} from "../transform/transformModelToClass"; +import {generateDocuments} from "./generateDocuments"; import {generateOutputsBarrelFile} from "./generateOutputsBarrelFile"; export function generateModels(dmmf: DMMF.Document, project: Project, baseDirPath: string) { - const modelsMap = toMap(dmmf.datamodel.models, "name"); - const models = DmmfModel.getModels(dmmf, modelsMap); + const modelsMap = toMap(getValue(dmmf, "datamodel.models", []), "name"); + const typesMap = toMap(getValue(dmmf, "datamodel.types", []), "name"); + + const models = DmmfModel.getModels(dmmf, modelsMap, typesMap); const modelsDirPath = path.resolve(baseDirPath, "models"); const modelsDirectory = project.createDirectory(modelsDirPath); const modelsIndex = modelsDirectory.createSourceFile(`index.ts`, undefined, {overwrite: true}); diff --git a/packages/orm/prisma/test/package-lock.json b/packages/orm/prisma/test/mongo/package-lock.json similarity index 100% rename from packages/orm/prisma/test/package-lock.json rename to packages/orm/prisma/test/mongo/package-lock.json diff --git a/packages/orm/prisma/test/package.json b/packages/orm/prisma/test/mongo/package.json similarity index 100% rename from packages/orm/prisma/test/package.json rename to packages/orm/prisma/test/mongo/package.json diff --git a/packages/orm/prisma/test/mongo/prisma/schema.prisma b/packages/orm/prisma/test/mongo/prisma/schema.prisma new file mode 100644 index 00000000000..67a7f56dce9 --- /dev/null +++ b/packages/orm/prisma/test/mongo/prisma/schema.prisma @@ -0,0 +1,34 @@ + +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" + binaryTargets = ["native", "windows", "debian-openssl-1.1.x"] + previewFeatures = ["interactiveTransactions"] + output = "../prisma/generated/client" +} + +generator tsed { + provider = "node ../../src/cli/dev.ts" + output = "../prisma/generated/tsed" + emitDMMF = true +} + +model User { + /// @TsED.Groups("!creation") + id String @id @default(auto()) @map("_id") @db.ObjectId + /// @TsED.Email() + email String @unique + info Info + /// @TsED.Groups("!creation") + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +type Info { + firstName String + lastName String +} diff --git a/packages/orm/prisma/test/postgres/package-lock.json b/packages/orm/prisma/test/postgres/package-lock.json new file mode 100644 index 00000000000..c9f3a033a41 --- /dev/null +++ b/packages/orm/prisma/test/postgres/package-lock.json @@ -0,0 +1,35 @@ +{ + "name": "@tsed/prisma-test", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@prisma/client": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-2.22.1.tgz", + "integrity": "sha512-JQjbsY6QSfFiovXHEp5WeJHa5p2CuR1ZFPAeYXmUsOAQOaMCrhgQmKAL6w2Q3SRA7ALqPjrKywN9/QfBc4Kp1A==", + "requires": { + "@prisma/engines-version": "2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c" + } + }, + "@prisma/engines": { + "version": "2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c.tgz", + "integrity": "sha512-KmWdogrsfsSLYvfqY3cS3QcDGzaEFklE+T6dNJf+k/KPQum4A29IwDalafMwh5cMN8ivZobUbowNSwWJrMT08Q==", + "dev": true + }, + "@prisma/engines-version": { + "version": "2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c.tgz", + "integrity": "sha512-OkkVwk6iTzTbwwl8JIKAENyxmh4TFORal55QMKQzrHEY8UzbD0M90mQnmziz3PAopQUZgTFFMlaPAq1WNrLMtA==" + }, + "prisma": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-2.22.1.tgz", + "integrity": "sha512-hwvCM3zyxgSda/+/p+GW7nz93jRebtMU01wAG7YVVnl0OKU+dpw1wPvPFmQRldkZHk8fTCleYmjc24WaSdVPZQ==", + "dev": true, + "requires": { + "@prisma/engines": "2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c" + } + } + } +} diff --git a/packages/orm/prisma/test/postgres/package.json b/packages/orm/prisma/test/postgres/package.json new file mode 100644 index 00000000000..9a29502f7e1 --- /dev/null +++ b/packages/orm/prisma/test/postgres/package.json @@ -0,0 +1,9 @@ +{ + "name": "@tsed/prisma-test", + "devDependencies": { + "prisma": "^4.0.0" + }, + "dependencies": { + "@prisma/client": "^4.0.0" + } +} diff --git a/packages/orm/prisma/test/prisma/schema.prisma b/packages/orm/prisma/test/postgres/prisma/schema.prisma similarity index 95% rename from packages/orm/prisma/test/prisma/schema.prisma rename to packages/orm/prisma/test/postgres/prisma/schema.prisma index 75ceaac39db..6926b683776 100644 --- a/packages/orm/prisma/test/prisma/schema.prisma +++ b/packages/orm/prisma/test/postgres/prisma/schema.prisma @@ -11,7 +11,7 @@ generator client { } generator tsed { - provider = "node ../src/cli/dev.ts" + provider = "node ../../src/cli/dev.ts" output = "../prisma/generated/tsed" emitDMMF = true }