From d45499bde9ed23fe6aabdfd32fc040e9765a2b42 Mon Sep 17 00:00:00 2001 From: Alexey Orlenko Date: Wed, 10 Jul 2024 21:34:57 +0200 Subject: [PATCH] test(dmmf): add tests for indexes --- .../dmmf/test_files/indexes_mongodb.json | 134 ++++++++++++++++++ .../dmmf/test_files/indexes_mongodb.prisma | 24 ++++ .../dmmf/test_files/indexes_mysql.json | 121 ++++++++++++++++ .../dmmf/test_files/indexes_mysql.prisma | 15 ++ .../dmmf/test_files/indexes_postgres.json | 58 ++++++++ .../dmmf/test_files/indexes_postgres.prisma | 11 ++ 6 files changed, 363 insertions(+) create mode 100644 query-engine/dmmf/test_files/indexes_mongodb.json create mode 100644 query-engine/dmmf/test_files/indexes_mongodb.prisma create mode 100644 query-engine/dmmf/test_files/indexes_mysql.json create mode 100644 query-engine/dmmf/test_files/indexes_mysql.prisma create mode 100644 query-engine/dmmf/test_files/indexes_postgres.json create mode 100644 query-engine/dmmf/test_files/indexes_postgres.prisma diff --git a/query-engine/dmmf/test_files/indexes_mongodb.json b/query-engine/dmmf/test_files/indexes_mongodb.json new file mode 100644 index 00000000000..9487e3ae84c --- /dev/null +++ b/query-engine/dmmf/test_files/indexes_mongodb.json @@ -0,0 +1,134 @@ +{ + "enums": [], + "models": [ + { + "name": "Post", + "dbName": null, + "fields": [ + { + "name": "id", + "dbName": "_id", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": true, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "title", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "content", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "comments", + "kind": "object", + "isList": true, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "Comment", + "isGenerated": false, + "isUpdatedAt": false + } + ], + "primaryKey": null, + "uniqueFields": [], + "uniqueIndexes": [], + "isGenerated": false + } + ], + "types": [ + { + "name": "Comment", + "dbName": null, + "fields": [ + { + "name": "userId", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String" + }, + { + "name": "content", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String" + } + ], + "primaryKey": null, + "uniqueFields": [], + "uniqueIndexes": [] + } + ], + "indexes": [ + { + "model": "Post", + "type": "normal", + "isDefinedOnField": false, + "fields": [ + { + "path": [ + "comments", + "Comment.userId" + ] + } + ] + }, + { + "model": "Post", + "type": "fulltext", + "isDefinedOnField": false, + "fields": [ + { + "path": [ + "title" + ], + "sortOrder": "desc" + }, + { + "path": [ + "content" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/query-engine/dmmf/test_files/indexes_mongodb.prisma b/query-engine/dmmf/test_files/indexes_mongodb.prisma new file mode 100644 index 00000000000..e73d7f4033f --- /dev/null +++ b/query-engine/dmmf/test_files/indexes_mongodb.prisma @@ -0,0 +1,24 @@ +datasource db { + provider = "mongodb" + url = "mongodb://" +} + +generator client { + provider = "prisma-client-js" + previewFeatures = ["fullTextIndex"] +} + +model Post { + id String @id @map("_id") @db.ObjectId + title String + content String + comments Comment[] + + @@index([comments.userId]) + @@fulltext([title(sort: Desc), content]) +} + +type Comment { + userId String @db.ObjectId + content String +} diff --git a/query-engine/dmmf/test_files/indexes_mysql.json b/query-engine/dmmf/test_files/indexes_mysql.json new file mode 100644 index 00000000000..bb26d4558f6 --- /dev/null +++ b/query-engine/dmmf/test_files/indexes_mysql.json @@ -0,0 +1,121 @@ +{ + "enums": [], + "models": [ + { + "name": "Post", + "dbName": null, + "fields": [ + { + "name": "title", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "abstract", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "slug", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": true, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "author", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "String", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "created_at", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "DateTime", + "isGenerated": false, + "isUpdatedAt": false + } + ], + "primaryKey": { + "name": null, + "fields": [ + "title", + "abstract" + ] + }, + "uniqueFields": [], + "uniqueIndexes": [], + "isGenerated": false + } + ], + "types": [], + "indexes": [ + { + "model": "Post", + "type": "unique", + "isDefinedOnField": true, + "fields": [ + { + "path": [ + "slug" + ], + "sortOrder": "desc", + "length": 42 + } + ] + }, + { + "model": "Post", + "type": "normal", + "isDefinedOnField": false, + "fields": [ + { + "path": [ + "author" + ] + }, + { + "path": [ + "created_at" + ], + "sortOrder": "desc" + } + ] + } + ] +} \ No newline at end of file diff --git a/query-engine/dmmf/test_files/indexes_mysql.prisma b/query-engine/dmmf/test_files/indexes_mysql.prisma new file mode 100644 index 00000000000..763bc75092a --- /dev/null +++ b/query-engine/dmmf/test_files/indexes_mysql.prisma @@ -0,0 +1,15 @@ +datasource db { + provider = "mysql" + url = "mysql://" +} + +model Post { + title String @db.VarChar(300) + abstract String @db.VarChar(3000) + slug String @unique(sort: Desc, length: 42) @db.VarChar(3000) + author String + created_at DateTime + + @@id([title(length: 100), abstract(length: 10)]) + @@index([author, created_at(sort: Desc)]) +} diff --git a/query-engine/dmmf/test_files/indexes_postgres.json b/query-engine/dmmf/test_files/indexes_postgres.json new file mode 100644 index 00000000000..22365620597 --- /dev/null +++ b/query-engine/dmmf/test_files/indexes_postgres.json @@ -0,0 +1,58 @@ +{ + "enums": [], + "models": [ + { + "name": "Example", + "dbName": null, + "fields": [ + { + "name": "id", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": true, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "Int", + "isGenerated": false, + "isUpdatedAt": false + }, + { + "name": "value", + "kind": "scalar", + "isList": false, + "isRequired": true, + "isUnique": false, + "isId": false, + "isReadOnly": false, + "hasDefaultValue": false, + "type": "Json", + "isGenerated": false, + "isUpdatedAt": false + } + ], + "primaryKey": null, + "uniqueFields": [], + "uniqueIndexes": [], + "isGenerated": false + } + ], + "types": [], + "indexes": [ + { + "model": "Example", + "type": "normal", + "isDefinedOnField": false, + "algorithm": "Gin", + "fields": [ + { + "path": [ + "value" + ], + "operatorClass": "JsonbPathOps" + } + ] + } + ] +} \ No newline at end of file diff --git a/query-engine/dmmf/test_files/indexes_postgres.prisma b/query-engine/dmmf/test_files/indexes_postgres.prisma new file mode 100644 index 00000000000..bec22b10a77 --- /dev/null +++ b/query-engine/dmmf/test_files/indexes_postgres.prisma @@ -0,0 +1,11 @@ +datasource db { + provider = "postgresql" + url = "postgresql://" +} + +model Example { + id Int @id + value Json + + @@index([value(ops: JsonbPathOps)], type: Gin) +}