From b838782d5c103fa8c8a22d912753f0d59dac74db Mon Sep 17 00:00:00 2001 From: rphlmr Date: Wed, 24 Jul 2024 11:07:30 +0200 Subject: [PATCH 1/8] remove generated clients --- src/prisma/client-mysql/edge.js | 208 --------------------------- src/prisma/client-mysql/index.js | 229 ------------------------------ src/prisma/client-pg/edge.js | 213 ---------------------------- src/prisma/client-pg/index.js | 234 ------------------------------- 4 files changed, 884 deletions(-) delete mode 100644 src/prisma/client-mysql/edge.js delete mode 100644 src/prisma/client-mysql/index.js delete mode 100644 src/prisma/client-pg/edge.js delete mode 100644 src/prisma/client-pg/index.js diff --git a/src/prisma/client-mysql/edge.js b/src/prisma/client-mysql/edge.js deleted file mode 100644 index 05579a0..0000000 --- a/src/prisma/client-mysql/edge.js +++ /dev/null @@ -1,208 +0,0 @@ - -Object.defineProperty(exports, "__esModule", { value: true }); - -const { - PrismaClientKnownRequestError, - PrismaClientUnknownRequestError, - PrismaClientRustPanicError, - PrismaClientInitializationError, - PrismaClientValidationError, - NotFoundError, - getPrismaClient, - sqltag, - empty, - join, - raw, - Decimal, - Debug, - objectEnumValues, - makeStrictEnum, - Extensions, - warnOnce, - defineDmmfProperty, - Public, - getRuntime -} = require('./runtime/edge.js') - - -const Prisma = {} - -exports.Prisma = Prisma -exports.$Enums = {} - -/** - * Prisma Client JS version: 5.15.0 - * Query Engine version: 12e25d8d06f6ea5a0252864dd9a03b1bb51f3022 - */ -Prisma.prismaVersion = { - client: "5.15.0", - engine: "12e25d8d06f6ea5a0252864dd9a03b1bb51f3022" -} - -Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError; -Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError -Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError -Prisma.PrismaClientInitializationError = PrismaClientInitializationError -Prisma.PrismaClientValidationError = PrismaClientValidationError -Prisma.NotFoundError = NotFoundError -Prisma.Decimal = Decimal - -/** - * Re-export of sql-template-tag - */ -Prisma.sql = sqltag -Prisma.empty = empty -Prisma.join = join -Prisma.raw = raw -Prisma.validator = Public.validator - -/** -* Extensions -*/ -Prisma.getExtensionContext = Extensions.getExtensionContext -Prisma.defineExtension = Extensions.defineExtension - -/** - * Shorthand utilities for JSON filtering - */ -Prisma.DbNull = objectEnumValues.instances.DbNull -Prisma.JsonNull = objectEnumValues.instances.JsonNull -Prisma.AnyNull = objectEnumValues.instances.AnyNull - -Prisma.NullTypes = { - DbNull: objectEnumValues.classes.DbNull, - JsonNull: objectEnumValues.classes.JsonNull, - AnyNull: objectEnumValues.classes.AnyNull -} - - - -/** - * Enums - */ -exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ - ReadUncommitted: 'ReadUncommitted', - ReadCommitted: 'ReadCommitted', - RepeatableRead: 'RepeatableRead', - Serializable: 'Serializable' -}); - -exports.Prisma.CustomerScalarFieldEnum = { - id: 'id', - createdAt: 'createdAt', - name: 'name', - email: 'email', - isActive: 'isActive' -}; - -exports.Prisma.AddressScalarFieldEnum = { - id: 'id', - street: 'street', - city: 'city', - postalCode: 'postalCode', - country: 'country', - customerId: 'customerId' -}; - -exports.Prisma.OrderScalarFieldEnum = { - id: 'id', - date: 'date', - totalAmount: 'totalAmount', - customerId: 'customerId' -}; - -exports.Prisma.ProductScalarFieldEnum = { - id: 'id', - name: 'name', - price: 'price', - quantity: 'quantity', - description: 'description' -}; - -exports.Prisma.SortOrder = { - asc: 'asc', - desc: 'desc' -}; - -exports.Prisma.NullsOrder = { - first: 'first', - last: 'last' -}; - - -exports.Prisma.ModelName = { - Customer: 'Customer', - Address: 'Address', - Order: 'Order', - Product: 'Product' -}; -/** - * Create the Client - */ -const config = { - "generator": { - "name": "client", - "provider": { - "fromEnvVar": null, - "value": "prisma-client-js" - }, - "output": { - "value": "/Users/nikolasburk/Desktop/bench/src/prisma/client-mysql", - "fromEnvVar": null - }, - "config": { - "engineType": "library" - }, - "binaryTargets": [ - { - "fromEnvVar": null, - "value": "darwin", - "native": true - } - ], - "previewFeatures": [], - "isCustomOutput": true - }, - "relativeEnvPaths": { - "rootEnvPath": null, - "schemaEnvPath": "../../../.env" - }, - "relativePath": "../../../prisma-mysql", - "clientVersion": "5.15.0", - "engineVersion": "12e25d8d06f6ea5a0252864dd9a03b1bb51f3022", - "datasourceNames": [ - "db" - ], - "activeProvider": "mysql", - "inlineDatasources": { - "db": { - "url": { - "fromEnvVar": "DATABASE_URL", - "value": null - } - } - }, - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/prisma/client-mysql\"\n}\n\ndatasource db {\n provider = \"mysql\"\n url = env(\"DATABASE_URL\")\n // shadowDatabaseUrl = env(\"SHADOW_DATABASE_URL\")\n}\n\nmodel Customer {\n id Int @id @default(autoincrement())\n createdAt DateTime @default(now())\n name String?\n email String // @unique\n address Address?\n isActive Boolean @default(false)\n // extraInfo Json?\n orders Order[]\n}\n\nmodel Address {\n id Int @id @default(autoincrement())\n street String?\n city String?\n postalCode String?\n country String?\n customerId Int @unique\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n}\n\nmodel Order {\n id Int @id @default(autoincrement())\n date DateTime\n totalAmount Float\n customerId Int\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n products Product[] @relation(\"OrderProducts\")\n}\n\nmodel Product {\n id Int @id @default(autoincrement())\n name String\n price Float\n quantity Int\n description String?\n orders Order[] @relation(\"OrderProducts\")\n}\n", - "inlineSchemaHash": "52952b09bb6375b1a609b037da691fc547d79b22b142a53b1dfb5e1c52f40991", - "copyEngine": true -} -config.dirname = '/' - -config.runtimeDataModel = JSON.parse("{\"models\":{\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"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},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Address\",\"relationName\":\"AddressToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Address\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"street\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"country\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"AddressToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"OrderProducts\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"price\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderProducts\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") -defineDmmfProperty(exports.Prisma, config.runtimeDataModel) -config.engineWasm = undefined - -config.injectableEdgeEnv = () => ({ - parsed: { - DATABASE_URL: typeof globalThis !== 'undefined' && globalThis['DATABASE_URL'] || typeof process !== 'undefined' && process.env && process.env.DATABASE_URL || undefined - } -}) - -if (typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) { - Debug.enable(typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) -} - -const PrismaClient = getPrismaClient(config) -exports.PrismaClient = PrismaClient -Object.assign(exports, Prisma) - diff --git a/src/prisma/client-mysql/index.js b/src/prisma/client-mysql/index.js deleted file mode 100644 index e3a8311..0000000 --- a/src/prisma/client-mysql/index.js +++ /dev/null @@ -1,229 +0,0 @@ - -Object.defineProperty(exports, "__esModule", { value: true }); - -const { - PrismaClientKnownRequestError, - PrismaClientUnknownRequestError, - PrismaClientRustPanicError, - PrismaClientInitializationError, - PrismaClientValidationError, - NotFoundError, - getPrismaClient, - sqltag, - empty, - join, - raw, - Decimal, - Debug, - objectEnumValues, - makeStrictEnum, - Extensions, - warnOnce, - defineDmmfProperty, - Public, - getRuntime -} = require('./runtime/library.js') - - -const Prisma = {} - -exports.Prisma = Prisma -exports.$Enums = {} - -/** - * Prisma Client JS version: 5.15.0 - * Query Engine version: 12e25d8d06f6ea5a0252864dd9a03b1bb51f3022 - */ -Prisma.prismaVersion = { - client: "5.15.0", - engine: "12e25d8d06f6ea5a0252864dd9a03b1bb51f3022" -} - -Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError; -Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError -Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError -Prisma.PrismaClientInitializationError = PrismaClientInitializationError -Prisma.PrismaClientValidationError = PrismaClientValidationError -Prisma.NotFoundError = NotFoundError -Prisma.Decimal = Decimal - -/** - * Re-export of sql-template-tag - */ -Prisma.sql = sqltag -Prisma.empty = empty -Prisma.join = join -Prisma.raw = raw -Prisma.validator = Public.validator - -/** -* Extensions -*/ -Prisma.getExtensionContext = Extensions.getExtensionContext -Prisma.defineExtension = Extensions.defineExtension - -/** - * Shorthand utilities for JSON filtering - */ -Prisma.DbNull = objectEnumValues.instances.DbNull -Prisma.JsonNull = objectEnumValues.instances.JsonNull -Prisma.AnyNull = objectEnumValues.instances.AnyNull - -Prisma.NullTypes = { - DbNull: objectEnumValues.classes.DbNull, - JsonNull: objectEnumValues.classes.JsonNull, - AnyNull: objectEnumValues.classes.AnyNull -} - - - const path = require('path') - -/** - * Enums - */ -exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ - ReadUncommitted: 'ReadUncommitted', - ReadCommitted: 'ReadCommitted', - RepeatableRead: 'RepeatableRead', - Serializable: 'Serializable' -}); - -exports.Prisma.CustomerScalarFieldEnum = { - id: 'id', - createdAt: 'createdAt', - name: 'name', - email: 'email', - isActive: 'isActive' -}; - -exports.Prisma.AddressScalarFieldEnum = { - id: 'id', - street: 'street', - city: 'city', - postalCode: 'postalCode', - country: 'country', - customerId: 'customerId' -}; - -exports.Prisma.OrderScalarFieldEnum = { - id: 'id', - date: 'date', - totalAmount: 'totalAmount', - customerId: 'customerId' -}; - -exports.Prisma.ProductScalarFieldEnum = { - id: 'id', - name: 'name', - price: 'price', - quantity: 'quantity', - description: 'description' -}; - -exports.Prisma.SortOrder = { - asc: 'asc', - desc: 'desc' -}; - -exports.Prisma.NullsOrder = { - first: 'first', - last: 'last' -}; - - -exports.Prisma.ModelName = { - Customer: 'Customer', - Address: 'Address', - Order: 'Order', - Product: 'Product' -}; -/** - * Create the Client - */ -const config = { - "generator": { - "name": "client", - "provider": { - "fromEnvVar": null, - "value": "prisma-client-js" - }, - "output": { - "value": "/Users/nikolasburk/Desktop/bench/src/prisma/client-mysql", - "fromEnvVar": null - }, - "config": { - "engineType": "library" - }, - "binaryTargets": [ - { - "fromEnvVar": null, - "value": "darwin", - "native": true - } - ], - "previewFeatures": [], - "isCustomOutput": true - }, - "relativeEnvPaths": { - "rootEnvPath": null, - "schemaEnvPath": "../../../.env" - }, - "relativePath": "../../../prisma-mysql", - "clientVersion": "5.15.0", - "engineVersion": "12e25d8d06f6ea5a0252864dd9a03b1bb51f3022", - "datasourceNames": [ - "db" - ], - "activeProvider": "mysql", - "inlineDatasources": { - "db": { - "url": { - "fromEnvVar": "DATABASE_URL", - "value": null - } - } - }, - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/prisma/client-mysql\"\n}\n\ndatasource db {\n provider = \"mysql\"\n url = env(\"DATABASE_URL\")\n // shadowDatabaseUrl = env(\"SHADOW_DATABASE_URL\")\n}\n\nmodel Customer {\n id Int @id @default(autoincrement())\n createdAt DateTime @default(now())\n name String?\n email String // @unique\n address Address?\n isActive Boolean @default(false)\n // extraInfo Json?\n orders Order[]\n}\n\nmodel Address {\n id Int @id @default(autoincrement())\n street String?\n city String?\n postalCode String?\n country String?\n customerId Int @unique\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n}\n\nmodel Order {\n id Int @id @default(autoincrement())\n date DateTime\n totalAmount Float\n customerId Int\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n products Product[] @relation(\"OrderProducts\")\n}\n\nmodel Product {\n id Int @id @default(autoincrement())\n name String\n price Float\n quantity Int\n description String?\n orders Order[] @relation(\"OrderProducts\")\n}\n", - "inlineSchemaHash": "52952b09bb6375b1a609b037da691fc547d79b22b142a53b1dfb5e1c52f40991", - "copyEngine": true -} - -const fs = require('fs') - -config.dirname = __dirname -if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) { - const alternativePaths = [ - "src/prisma/client-mysql", - "prisma/client-mysql", - ] - - const alternativePath = alternativePaths.find((altPath) => { - return fs.existsSync(path.join(process.cwd(), altPath, 'schema.prisma')) - }) ?? alternativePaths[0] - - config.dirname = path.join(process.cwd(), alternativePath) - config.isBundled = true -} - -config.runtimeDataModel = JSON.parse("{\"models\":{\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"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},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Address\",\"relationName\":\"AddressToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Address\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"street\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"country\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"AddressToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"OrderProducts\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"price\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderProducts\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") -defineDmmfProperty(exports.Prisma, config.runtimeDataModel) -config.engineWasm = undefined - - -const { warnEnvConflicts } = require('./runtime/library.js') - -warnEnvConflicts({ - rootEnvPath: config.relativeEnvPaths.rootEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.rootEnvPath), - schemaEnvPath: config.relativeEnvPaths.schemaEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.schemaEnvPath) -}) - -const PrismaClient = getPrismaClient(config) -exports.PrismaClient = PrismaClient -Object.assign(exports, Prisma) - -// file annotations for bundling tools to include these files -path.join(__dirname, "libquery_engine-darwin.dylib.node"); -path.join(process.cwd(), "src/prisma/client-mysql/libquery_engine-darwin.dylib.node") -// file annotations for bundling tools to include these files -path.join(__dirname, "schema.prisma"); -path.join(process.cwd(), "src/prisma/client-mysql/schema.prisma") diff --git a/src/prisma/client-pg/edge.js b/src/prisma/client-pg/edge.js deleted file mode 100644 index e157c06..0000000 --- a/src/prisma/client-pg/edge.js +++ /dev/null @@ -1,213 +0,0 @@ - -Object.defineProperty(exports, "__esModule", { value: true }); - -const { - PrismaClientKnownRequestError, - PrismaClientUnknownRequestError, - PrismaClientRustPanicError, - PrismaClientInitializationError, - PrismaClientValidationError, - NotFoundError, - getPrismaClient, - sqltag, - empty, - join, - raw, - Decimal, - Debug, - objectEnumValues, - makeStrictEnum, - Extensions, - warnOnce, - defineDmmfProperty, - Public, - getRuntime -} = require('./runtime/edge.js') - - -const Prisma = {} - -exports.Prisma = Prisma -exports.$Enums = {} - -/** - * Prisma Client JS version: 5.15.0 - * Query Engine version: 12e25d8d06f6ea5a0252864dd9a03b1bb51f3022 - */ -Prisma.prismaVersion = { - client: "5.15.0", - engine: "12e25d8d06f6ea5a0252864dd9a03b1bb51f3022" -} - -Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError; -Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError -Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError -Prisma.PrismaClientInitializationError = PrismaClientInitializationError -Prisma.PrismaClientValidationError = PrismaClientValidationError -Prisma.NotFoundError = NotFoundError -Prisma.Decimal = Decimal - -/** - * Re-export of sql-template-tag - */ -Prisma.sql = sqltag -Prisma.empty = empty -Prisma.join = join -Prisma.raw = raw -Prisma.validator = Public.validator - -/** -* Extensions -*/ -Prisma.getExtensionContext = Extensions.getExtensionContext -Prisma.defineExtension = Extensions.defineExtension - -/** - * Shorthand utilities for JSON filtering - */ -Prisma.DbNull = objectEnumValues.instances.DbNull -Prisma.JsonNull = objectEnumValues.instances.JsonNull -Prisma.AnyNull = objectEnumValues.instances.AnyNull - -Prisma.NullTypes = { - DbNull: objectEnumValues.classes.DbNull, - JsonNull: objectEnumValues.classes.JsonNull, - AnyNull: objectEnumValues.classes.AnyNull -} - - - -/** - * Enums - */ -exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ - ReadUncommitted: 'ReadUncommitted', - ReadCommitted: 'ReadCommitted', - RepeatableRead: 'RepeatableRead', - Serializable: 'Serializable' -}); - -exports.Prisma.CustomerScalarFieldEnum = { - id: 'id', - createdAt: 'createdAt', - name: 'name', - email: 'email', - isActive: 'isActive' -}; - -exports.Prisma.AddressScalarFieldEnum = { - id: 'id', - street: 'street', - city: 'city', - postalCode: 'postalCode', - country: 'country', - customerId: 'customerId' -}; - -exports.Prisma.OrderScalarFieldEnum = { - id: 'id', - date: 'date', - totalAmount: 'totalAmount', - customerId: 'customerId' -}; - -exports.Prisma.ProductScalarFieldEnum = { - id: 'id', - name: 'name', - price: 'price', - quantity: 'quantity', - description: 'description' -}; - -exports.Prisma.SortOrder = { - asc: 'asc', - desc: 'desc' -}; - -exports.Prisma.QueryMode = { - default: 'default', - insensitive: 'insensitive' -}; - -exports.Prisma.NullsOrder = { - first: 'first', - last: 'last' -}; - - -exports.Prisma.ModelName = { - Customer: 'Customer', - Address: 'Address', - Order: 'Order', - Product: 'Product' -}; -/** - * Create the Client - */ -const config = { - "generator": { - "name": "client", - "provider": { - "fromEnvVar": null, - "value": "prisma-client-js" - }, - "output": { - "value": "/Users/nikolasburk/Desktop/bench/src/prisma/client-pg", - "fromEnvVar": null - }, - "config": { - "engineType": "library" - }, - "binaryTargets": [ - { - "fromEnvVar": null, - "value": "darwin", - "native": true - } - ], - "previewFeatures": [], - "isCustomOutput": true - }, - "relativeEnvPaths": { - "rootEnvPath": null, - "schemaEnvPath": "../../../.env" - }, - "relativePath": "../../../prisma-pg", - "clientVersion": "5.15.0", - "engineVersion": "12e25d8d06f6ea5a0252864dd9a03b1bb51f3022", - "datasourceNames": [ - "db" - ], - "activeProvider": "postgresql", - "inlineDatasources": { - "db": { - "url": { - "fromEnvVar": "DATABASE_URL", - "value": null - } - } - }, - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/prisma/client-pg\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel Customer {\n id Int @id @default(autoincrement())\n createdAt DateTime @default(now())\n name String?\n email String // @unique\n address Address?\n isActive Boolean @default(false)\n // extraInfo Json?\n orders Order[]\n}\n\nmodel Address {\n id Int @id @default(autoincrement())\n street String?\n city String?\n postalCode String?\n country String?\n customerId Int @unique\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n}\n\nmodel Order {\n id Int @id @default(autoincrement())\n date DateTime\n totalAmount Float\n customerId Int\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n products Product[] @relation(\"OrderProducts\")\n}\n\nmodel Product {\n id Int @id @default(autoincrement())\n name String\n price Float\n quantity Int\n description String?\n orders Order[] @relation(\"OrderProducts\")\n}\n", - "inlineSchemaHash": "034621a130ad257520af372e2a0a254847c9c8d85fb033d99eadbe593e744736", - "copyEngine": true -} -config.dirname = '/' - -config.runtimeDataModel = JSON.parse("{\"models\":{\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"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},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Address\",\"relationName\":\"AddressToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Address\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"street\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"country\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"AddressToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"OrderProducts\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"price\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderProducts\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") -defineDmmfProperty(exports.Prisma, config.runtimeDataModel) -config.engineWasm = undefined - -config.injectableEdgeEnv = () => ({ - parsed: { - DATABASE_URL: typeof globalThis !== 'undefined' && globalThis['DATABASE_URL'] || typeof process !== 'undefined' && process.env && process.env.DATABASE_URL || undefined - } -}) - -if (typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) { - Debug.enable(typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) -} - -const PrismaClient = getPrismaClient(config) -exports.PrismaClient = PrismaClient -Object.assign(exports, Prisma) - diff --git a/src/prisma/client-pg/index.js b/src/prisma/client-pg/index.js deleted file mode 100644 index 4ad217b..0000000 --- a/src/prisma/client-pg/index.js +++ /dev/null @@ -1,234 +0,0 @@ - -Object.defineProperty(exports, "__esModule", { value: true }); - -const { - PrismaClientKnownRequestError, - PrismaClientUnknownRequestError, - PrismaClientRustPanicError, - PrismaClientInitializationError, - PrismaClientValidationError, - NotFoundError, - getPrismaClient, - sqltag, - empty, - join, - raw, - Decimal, - Debug, - objectEnumValues, - makeStrictEnum, - Extensions, - warnOnce, - defineDmmfProperty, - Public, - getRuntime -} = require('./runtime/library.js') - - -const Prisma = {} - -exports.Prisma = Prisma -exports.$Enums = {} - -/** - * Prisma Client JS version: 5.15.0 - * Query Engine version: 12e25d8d06f6ea5a0252864dd9a03b1bb51f3022 - */ -Prisma.prismaVersion = { - client: "5.15.0", - engine: "12e25d8d06f6ea5a0252864dd9a03b1bb51f3022" -} - -Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError; -Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError -Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError -Prisma.PrismaClientInitializationError = PrismaClientInitializationError -Prisma.PrismaClientValidationError = PrismaClientValidationError -Prisma.NotFoundError = NotFoundError -Prisma.Decimal = Decimal - -/** - * Re-export of sql-template-tag - */ -Prisma.sql = sqltag -Prisma.empty = empty -Prisma.join = join -Prisma.raw = raw -Prisma.validator = Public.validator - -/** -* Extensions -*/ -Prisma.getExtensionContext = Extensions.getExtensionContext -Prisma.defineExtension = Extensions.defineExtension - -/** - * Shorthand utilities for JSON filtering - */ -Prisma.DbNull = objectEnumValues.instances.DbNull -Prisma.JsonNull = objectEnumValues.instances.JsonNull -Prisma.AnyNull = objectEnumValues.instances.AnyNull - -Prisma.NullTypes = { - DbNull: objectEnumValues.classes.DbNull, - JsonNull: objectEnumValues.classes.JsonNull, - AnyNull: objectEnumValues.classes.AnyNull -} - - - const path = require('path') - -/** - * Enums - */ -exports.Prisma.TransactionIsolationLevel = makeStrictEnum({ - ReadUncommitted: 'ReadUncommitted', - ReadCommitted: 'ReadCommitted', - RepeatableRead: 'RepeatableRead', - Serializable: 'Serializable' -}); - -exports.Prisma.CustomerScalarFieldEnum = { - id: 'id', - createdAt: 'createdAt', - name: 'name', - email: 'email', - isActive: 'isActive' -}; - -exports.Prisma.AddressScalarFieldEnum = { - id: 'id', - street: 'street', - city: 'city', - postalCode: 'postalCode', - country: 'country', - customerId: 'customerId' -}; - -exports.Prisma.OrderScalarFieldEnum = { - id: 'id', - date: 'date', - totalAmount: 'totalAmount', - customerId: 'customerId' -}; - -exports.Prisma.ProductScalarFieldEnum = { - id: 'id', - name: 'name', - price: 'price', - quantity: 'quantity', - description: 'description' -}; - -exports.Prisma.SortOrder = { - asc: 'asc', - desc: 'desc' -}; - -exports.Prisma.QueryMode = { - default: 'default', - insensitive: 'insensitive' -}; - -exports.Prisma.NullsOrder = { - first: 'first', - last: 'last' -}; - - -exports.Prisma.ModelName = { - Customer: 'Customer', - Address: 'Address', - Order: 'Order', - Product: 'Product' -}; -/** - * Create the Client - */ -const config = { - "generator": { - "name": "client", - "provider": { - "fromEnvVar": null, - "value": "prisma-client-js" - }, - "output": { - "value": "/Users/nikolasburk/Desktop/bench/src/prisma/client-pg", - "fromEnvVar": null - }, - "config": { - "engineType": "library" - }, - "binaryTargets": [ - { - "fromEnvVar": null, - "value": "darwin", - "native": true - } - ], - "previewFeatures": [], - "isCustomOutput": true - }, - "relativeEnvPaths": { - "rootEnvPath": null, - "schemaEnvPath": "../../../.env" - }, - "relativePath": "../../../prisma-pg", - "clientVersion": "5.15.0", - "engineVersion": "12e25d8d06f6ea5a0252864dd9a03b1bb51f3022", - "datasourceNames": [ - "db" - ], - "activeProvider": "postgresql", - "inlineDatasources": { - "db": { - "url": { - "fromEnvVar": "DATABASE_URL", - "value": null - } - } - }, - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/prisma/client-pg\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel Customer {\n id Int @id @default(autoincrement())\n createdAt DateTime @default(now())\n name String?\n email String // @unique\n address Address?\n isActive Boolean @default(false)\n // extraInfo Json?\n orders Order[]\n}\n\nmodel Address {\n id Int @id @default(autoincrement())\n street String?\n city String?\n postalCode String?\n country String?\n customerId Int @unique\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n}\n\nmodel Order {\n id Int @id @default(autoincrement())\n date DateTime\n totalAmount Float\n customerId Int\n customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade)\n products Product[] @relation(\"OrderProducts\")\n}\n\nmodel Product {\n id Int @id @default(autoincrement())\n name String\n price Float\n quantity Int\n description String?\n orders Order[] @relation(\"OrderProducts\")\n}\n", - "inlineSchemaHash": "034621a130ad257520af372e2a0a254847c9c8d85fb033d99eadbe593e744736", - "copyEngine": true -} - -const fs = require('fs') - -config.dirname = __dirname -if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) { - const alternativePaths = [ - "src/prisma/client-pg", - "prisma/client-pg", - ] - - const alternativePath = alternativePaths.find((altPath) => { - return fs.existsSync(path.join(process.cwd(), altPath, 'schema.prisma')) - }) ?? alternativePaths[0] - - config.dirname = path.join(process.cwd(), alternativePath) - config.isBundled = true -} - -config.runtimeDataModel = JSON.parse("{\"models\":{\"Customer\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"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},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Address\",\"relationName\":\"AddressToCustomer\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"isActive\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Address\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"street\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"city\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"postalCode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"country\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"AddressToCustomer\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Order\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customerId\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"customer\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Customer\",\"relationName\":\"CustomerToOrder\",\"relationFromFields\":[\"customerId\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"products\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Product\",\"relationName\":\"OrderProducts\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Product\":{\"dbName\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"price\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Float\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"quantity\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"orders\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Order\",\"relationName\":\"OrderProducts\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") -defineDmmfProperty(exports.Prisma, config.runtimeDataModel) -config.engineWasm = undefined - - -const { warnEnvConflicts } = require('./runtime/library.js') - -warnEnvConflicts({ - rootEnvPath: config.relativeEnvPaths.rootEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.rootEnvPath), - schemaEnvPath: config.relativeEnvPaths.schemaEnvPath && path.resolve(config.dirname, config.relativeEnvPaths.schemaEnvPath) -}) - -const PrismaClient = getPrismaClient(config) -exports.PrismaClient = PrismaClient -Object.assign(exports, Prisma) - -// file annotations for bundling tools to include these files -path.join(__dirname, "libquery_engine-darwin.dylib.node"); -path.join(process.cwd(), "src/prisma/client-pg/libquery_engine-darwin.dylib.node") -// file annotations for bundling tools to include these files -path.join(__dirname, "schema.prisma"); -path.join(process.cwd(), "src/prisma/client-pg/schema.prisma") From 71914f0bd1a7c6893d8880ae2a084852c921b99d Mon Sep 17 00:00:00 2001 From: rphlmr Date: Wed, 24 Jul 2024 11:08:11 +0200 Subject: [PATCH 2/8] update ignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0481255..0182d72 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,6 @@ results data* test.ts src/prisma/client-mysql -src/prisma/client-postgresql +src/prisma/client-pg backup */migrations \ No newline at end of file From ba65058a2e6d974427a0b9ff4aae61aef9c84b74 Mon Sep 17 00:00:00 2001 From: rphlmr Date: Wed, 24 Jul 2024 11:08:34 +0200 Subject: [PATCH 3/8] fix results folder initial creation --- src/lib/write-results.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/write-results.ts b/src/lib/write-results.ts index df29b11..4d5418f 100644 --- a/src/lib/write-results.ts +++ b/src/lib/write-results.ts @@ -14,7 +14,7 @@ export default function writeResults( const resultsDir = path.join('.', `results/${db}-${benchmarkOptions.size}-${benchmarkOptions.iterations}-${resultsDirectoryTimestamp}`); if (!fs.existsSync(resultsDir)) { - fs.mkdirSync(resultsDir); + fs.mkdirSync(resultsDir, {recursive: true}); console.log(`Results directory didn't exist, created directory: ${resultsDir}`); } From 2faf91aeccdbb32ac0ae67ca256c56cb4ef40100 Mon Sep 17 00:00:00 2001 From: rphlmr Date: Wed, 24 Jul 2024 11:15:36 +0200 Subject: [PATCH 4/8] prevent lazy connection --- src/drizzle/drizzle-mysql.ts | 4 +++- src/drizzle/drizzle-pg.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/drizzle/drizzle-mysql.ts b/src/drizzle/drizzle-mysql.ts index c09902a..c3012dd 100644 --- a/src/drizzle/drizzle-mysql.ts +++ b/src/drizzle/drizzle-mysql.ts @@ -1,7 +1,7 @@ import { drizzle } from "drizzle-orm/mysql2"; import * as schema from "./schema/schema-mysql"; import * as relations from "./schema/relations-mysql"; -import { eq, desc } from "drizzle-orm"; +import { eq, desc, sql } from "drizzle-orm"; import measure from "../lib/measure"; import mysql from "mysql2/promise"; import { QueryResult } from "../lib/types"; @@ -18,6 +18,8 @@ export async function drizzleMySQL(databaseUrl: string): Promise schema: { ...schema, ...relations }, mode: "default", }); + // connect + await db.execute(sql`select 1`); console.log(`run drizzle benchmarks: `, databaseUrl); diff --git a/src/drizzle/drizzle-pg.ts b/src/drizzle/drizzle-pg.ts index cc04a49..d1603be 100644 --- a/src/drizzle/drizzle-pg.ts +++ b/src/drizzle/drizzle-pg.ts @@ -3,7 +3,7 @@ import { drizzle } from "drizzle-orm/postgres-js"; // import { Customer, Order, Address } from "./schema/schema-postgres"; import * as schema from "./schema/schema-postgres"; import * as relations from "./schema/relations-postgres"; -import { eq, desc } from "drizzle-orm"; +import { eq, desc, sql } from "drizzle-orm"; import measure from "../lib/measure"; import postgres from "postgres"; import { QueryResult } from "../lib/types"; @@ -13,6 +13,8 @@ export async function drizzlePg(databaseUrl: string): Promise { ssl: databaseUrl.includes("localhost") ? undefined : { rejectUnauthorized: false } }); const db = drizzle(client, { schema: { ...schema, ...relations } }); + // connect + await db.execute(sql`select 1`); console.log(`Run drizzle benchmarks: `, databaseUrl); const results: QueryResult[] = []; From 84683679d62f4685a94b1b428024b7673eeffc13 Mon Sep 17 00:00:00 2001 From: rphlmr Date: Wed, 24 Jul 2024 11:24:36 +0200 Subject: [PATCH 5/8] optimize drizzle query usages --- src/drizzle/drizzle-mysql.ts | 6 ++++-- src/drizzle/drizzle-pg.ts | 12 +++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/drizzle/drizzle-mysql.ts b/src/drizzle/drizzle-mysql.ts index c3012dd..0446446 100644 --- a/src/drizzle/drizzle-mysql.ts +++ b/src/drizzle/drizzle-mysql.ts @@ -169,15 +169,17 @@ export async function drizzleMySQL(databaseUrl: string): Promise "drizzle-nested-update", db.transaction(async (trx) => { // Update customer name - await trx.update(schema.Customer).set({ name: "John Doe Updated" }).where(eq(schema.Customer.id, 1)); + const customerUpdate = trx.update(schema.Customer).set({ name: "John Doe Updated" }).where(eq(schema.Customer.id, 1)); // Update address - await trx + const addressUpdate = trx .update(schema.Address) .set({ street: "456 New St", }) .where(eq(schema.Address.customerId, 1)); + + await Promise.all([customerUpdate, addressUpdate]); }) ) ); diff --git a/src/drizzle/drizzle-pg.ts b/src/drizzle/drizzle-pg.ts index d1603be..e79b16e 100644 --- a/src/drizzle/drizzle-pg.ts +++ b/src/drizzle/drizzle-pg.ts @@ -117,7 +117,7 @@ export async function drizzlePg(databaseUrl: string): Promise { email: "john.doe@example.com", isActive: false, }) - .returning(); + .returning({id: schema.Customer.id}); const customerId = customer[0].id; @@ -129,7 +129,7 @@ export async function drizzlePg(databaseUrl: string): Promise { date: `${new Date().toISOString()}`, totalAmount: "100.5", }) - .returning(); + .returning({id: schema.Order.id}); const orderId = insertedOrder[0].id; @@ -165,18 +165,20 @@ export async function drizzlePg(databaseUrl: string): Promise { "drizzle-nested-update", db.transaction(async (trx) => { // Update customer name - await trx + const customerUpdate = trx .update(schema.Customer) .set({ name: "John Doe Updated" }) .where(eq(schema.Customer.id, 1)); // Update address - await trx + const addressUpdate = trx .update(schema.Address) .set({ street: "456 New St", }) .where(eq(schema.Address.customerId, 1)); + + await Promise.all([customerUpdate, addressUpdate]); }) ) ); @@ -216,7 +218,7 @@ export async function drizzlePg(databaseUrl: string): Promise { target: schema.Customer.id, set: { name: "John Doe Upserted" }, }) - .returning(); + .returning({id: schema.Customer.id}); const customerId = customer[0].id; // Update address From e9b72fc84138cc1b14a5cbace442732f8c84599e Mon Sep 17 00:00:00 2001 From: rphlmr Date: Wed, 24 Jul 2024 11:40:07 +0200 Subject: [PATCH 6/8] remove generated schema --- src/prisma/client-mysql/package.json | 84 --------------------------- src/prisma/client-mysql/schema.prisma | 49 ---------------- src/prisma/client-pg/package.json | 84 --------------------------- src/prisma/client-pg/schema.prisma | 48 --------------- 4 files changed, 265 deletions(-) delete mode 100644 src/prisma/client-mysql/package.json delete mode 100644 src/prisma/client-mysql/schema.prisma delete mode 100644 src/prisma/client-pg/package.json delete mode 100644 src/prisma/client-pg/schema.prisma diff --git a/src/prisma/client-mysql/package.json b/src/prisma/client-mysql/package.json deleted file mode 100644 index 8199626..0000000 --- a/src/prisma/client-mysql/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "prisma-client-93fef4ea73e0f018183470442c196546a12a93256fe6eb5b0b8cecf897758199", - "main": "index.js", - "types": "index.d.ts", - "browser": "index-browser.js", - "exports": { - "./package.json": "./package.json", - ".": { - "require": { - "node": "./index.js", - "edge-light": "./wasm.js", - "workerd": "./wasm.js", - "worker": "./wasm.js", - "browser": "./index-browser.js", - "default": "./index.js" - }, - "import": { - "node": "./index.js", - "edge-light": "./wasm.js", - "workerd": "./wasm.js", - "worker": "./wasm.js", - "browser": "./index-browser.js", - "default": "./index.js" - }, - "default": "./index.js" - }, - "./edge": { - "types": "./edge.d.ts", - "require": "./edge.js", - "import": "./edge.js", - "default": "./edge.js" - }, - "./react-native": { - "types": "./react-native.d.ts", - "require": "./react-native.js", - "import": "./react-native.js", - "default": "./react-native.js" - }, - "./extension": { - "types": "./extension.d.ts", - "require": "./extension.js", - "import": "./extension.js", - "default": "./extension.js" - }, - "./index-browser": { - "types": "./index.d.ts", - "require": "./index-browser.js", - "import": "./index-browser.js", - "default": "./index-browser.js" - }, - "./index": { - "types": "./index.d.ts", - "require": "./index.js", - "import": "./index.js", - "default": "./index.js" - }, - "./wasm": { - "types": "./wasm.d.ts", - "require": "./wasm.js", - "import": "./wasm.js", - "default": "./wasm.js" - }, - "./runtime/library": { - "types": "./runtime/library.d.ts", - "require": "./runtime/library.js", - "import": "./runtime/library.js", - "default": "./runtime/library.js" - }, - "./runtime/binary": { - "types": "./runtime/binary.d.ts", - "require": "./runtime/binary.js", - "import": "./runtime/binary.js", - "default": "./runtime/binary.js" - }, - "./generator-build": { - "require": "./generator-build/index.js", - "import": "./generator-build/index.js", - "default": "./generator-build/index.js" - }, - "./*": "./*" - }, - "version": "5.15.0", - "sideEffects": false -} \ No newline at end of file diff --git a/src/prisma/client-mysql/schema.prisma b/src/prisma/client-mysql/schema.prisma deleted file mode 100644 index 7b81ed2..0000000 --- a/src/prisma/client-mysql/schema.prisma +++ /dev/null @@ -1,49 +0,0 @@ -generator client { - provider = "prisma-client-js" - output = "../src/prisma/client-mysql" -} - -datasource db { - provider = "mysql" - url = env("DATABASE_URL") - // shadowDatabaseUrl = env("SHADOW_DATABASE_URL") -} - -model Customer { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - name String? - email String // @unique - address Address? - isActive Boolean @default(false) - // extraInfo Json? - orders Order[] -} - -model Address { - id Int @id @default(autoincrement()) - street String? - city String? - postalCode String? - country String? - customerId Int @unique - customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) -} - -model Order { - id Int @id @default(autoincrement()) - date DateTime - totalAmount Float - customerId Int - customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) - products Product[] @relation("OrderProducts") -} - -model Product { - id Int @id @default(autoincrement()) - name String - price Float - quantity Int - description String? - orders Order[] @relation("OrderProducts") -} diff --git a/src/prisma/client-pg/package.json b/src/prisma/client-pg/package.json deleted file mode 100644 index 1fe3ccb..0000000 --- a/src/prisma/client-pg/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "prisma-client-921e7267b8033fe5fbc477269bd4bea957a67bc23bb1b316fd63bf103dd8a52c", - "main": "index.js", - "types": "index.d.ts", - "browser": "index-browser.js", - "exports": { - "./package.json": "./package.json", - ".": { - "require": { - "node": "./index.js", - "edge-light": "./wasm.js", - "workerd": "./wasm.js", - "worker": "./wasm.js", - "browser": "./index-browser.js", - "default": "./index.js" - }, - "import": { - "node": "./index.js", - "edge-light": "./wasm.js", - "workerd": "./wasm.js", - "worker": "./wasm.js", - "browser": "./index-browser.js", - "default": "./index.js" - }, - "default": "./index.js" - }, - "./edge": { - "types": "./edge.d.ts", - "require": "./edge.js", - "import": "./edge.js", - "default": "./edge.js" - }, - "./react-native": { - "types": "./react-native.d.ts", - "require": "./react-native.js", - "import": "./react-native.js", - "default": "./react-native.js" - }, - "./extension": { - "types": "./extension.d.ts", - "require": "./extension.js", - "import": "./extension.js", - "default": "./extension.js" - }, - "./index-browser": { - "types": "./index.d.ts", - "require": "./index-browser.js", - "import": "./index-browser.js", - "default": "./index-browser.js" - }, - "./index": { - "types": "./index.d.ts", - "require": "./index.js", - "import": "./index.js", - "default": "./index.js" - }, - "./wasm": { - "types": "./wasm.d.ts", - "require": "./wasm.js", - "import": "./wasm.js", - "default": "./wasm.js" - }, - "./runtime/library": { - "types": "./runtime/library.d.ts", - "require": "./runtime/library.js", - "import": "./runtime/library.js", - "default": "./runtime/library.js" - }, - "./runtime/binary": { - "types": "./runtime/binary.d.ts", - "require": "./runtime/binary.js", - "import": "./runtime/binary.js", - "default": "./runtime/binary.js" - }, - "./generator-build": { - "require": "./generator-build/index.js", - "import": "./generator-build/index.js", - "default": "./generator-build/index.js" - }, - "./*": "./*" - }, - "version": "5.15.0", - "sideEffects": false -} \ No newline at end of file diff --git a/src/prisma/client-pg/schema.prisma b/src/prisma/client-pg/schema.prisma deleted file mode 100644 index b394121..0000000 --- a/src/prisma/client-pg/schema.prisma +++ /dev/null @@ -1,48 +0,0 @@ -generator client { - provider = "prisma-client-js" - output = "../src/prisma/client-pg" -} - -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} - -model Customer { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - name String? - email String // @unique - address Address? - isActive Boolean @default(false) - // extraInfo Json? - orders Order[] -} - -model Address { - id Int @id @default(autoincrement()) - street String? - city String? - postalCode String? - country String? - customerId Int @unique - customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) -} - -model Order { - id Int @id @default(autoincrement()) - date DateTime - totalAmount Float - customerId Int - customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) - products Product[] @relation("OrderProducts") -} - -model Product { - id Int @id @default(autoincrement()) - name String - price Float - quantity Int - description String? - orders Order[] @relation("OrderProducts") -} From 27a6b348c2b9a908d40c2ee451c7fc0bb55cdab7 Mon Sep 17 00:00:00 2001 From: rphlmr Date: Wed, 24 Jul 2024 11:43:35 +0200 Subject: [PATCH 7/8] Indexes matter for Drizzle query API --- prisma-mysql/schema.prisma | 10 ++++++--- prisma-pg/schema.prisma | 42 +++++++++++++++++++++----------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/prisma-mysql/schema.prisma b/prisma-mysql/schema.prisma index 6b5b92a..ad08c09 100644 --- a/prisma-mysql/schema.prisma +++ b/prisma-mysql/schema.prisma @@ -1,11 +1,11 @@ generator client { provider = "prisma-client-js" - output = "../src/prisma/client-mysql" + output = "../src/prisma/client-mysql" } datasource db { - provider = "mysql" - url = env("DATABASE_URL") + provider = "mysql" + url = env("DATABASE_URL") // shadowDatabaseUrl = env("SHADOW_DATABASE_URL") } @@ -28,6 +28,8 @@ model Address { country String? customerId Int @unique customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) + + @@index([customerId], name: "Address_customerId_idx") } model Order { @@ -37,6 +39,8 @@ model Order { customerId Int customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) products Product[] @relation("OrderProducts") + + @@index([customerId], name: "Order_customerId_idx") } model Product { diff --git a/prisma-pg/schema.prisma b/prisma-pg/schema.prisma index 86ff726..7362442 100644 --- a/prisma-pg/schema.prisma +++ b/prisma-pg/schema.prisma @@ -1,6 +1,6 @@ generator client { provider = "prisma-client-js" - output = "../src/prisma/client-pg" + output = "../src/prisma/client-pg" } datasource db { @@ -9,40 +9,44 @@ datasource db { } model Customer { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - name String? - email String // @unique - address Address? - isActive Boolean @default(false) + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + name String? + email String // @unique + address Address? + isActive Boolean @default(false) // extraInfo Json? - orders Order[] + orders Order[] } model Address { - id Int @id @default(autoincrement()) - street String? - city String? - postalCode String? - country String? - customerId Int @unique - customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) + id Int @id @default(autoincrement()) + street String? + city String? + postalCode String? + country String? + customerId Int @unique + customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) + + @@index([customerId], name: "Address_customerId_idx") } model Order { id Int @id @default(autoincrement()) - date DateTime + date DateTime totalAmount Float customerId Int customer Customer @relation(fields: [customerId], references: [id], onDelete: Cascade) products Product[] @relation("OrderProducts") + + @@index([customerId], name: "Order_customerId_idx") } model Product { - id Int @id @default(autoincrement()) + id Int @id @default(autoincrement()) name String price Float quantity Int description String? - orders Order[] @relation("OrderProducts") -} \ No newline at end of file + orders Order[] @relation("OrderProducts") +} From 573af7658a087967541f179047cc62c21c7d5225 Mon Sep 17 00:00:00 2001 From: rphlmr Date: Wed, 24 Jul 2024 12:01:55 +0200 Subject: [PATCH 8/8] add drizzle with select api --- src/drizzle/drizzle-select-pg.ts | 330 +++++++++++++++++++++++++++++++ src/drizzle/drizzle-snippets.ts | 129 ++++++++++++ src/lib/compare-results.ts | 4 +- src/lib/types.ts | 2 +- src/lib/website-output.ts | 13 +- src/run-benchmarks-pg.ts | 10 + 6 files changed, 483 insertions(+), 5 deletions(-) create mode 100644 src/drizzle/drizzle-select-pg.ts diff --git a/src/drizzle/drizzle-select-pg.ts b/src/drizzle/drizzle-select-pg.ts new file mode 100644 index 0000000..57d299d --- /dev/null +++ b/src/drizzle/drizzle-select-pg.ts @@ -0,0 +1,330 @@ +import { drizzle } from "drizzle-orm/postgres-js"; + +// import { Customer, Order, Address } from "./schema/schema-postgres"; +import * as schema from "./schema/schema-postgres"; +import * as relations from "./schema/relations-postgres"; +import { eq, desc, sql } from "drizzle-orm"; +import measure from "../lib/measure"; +import postgres from "postgres"; +import { QueryResult } from "../lib/types"; + +export async function drizzleSelectPg(databaseUrl: string): Promise { + const client = postgres(databaseUrl, { + ssl: databaseUrl.includes("localhost") ? undefined : { rejectUnauthorized: false } + }); + const db = drizzle(client, { schema }); + // connect + await db.execute(sql`select 1`); + console.log(`Run drizzle select benchmarks: `, databaseUrl); + + const results: QueryResult[] = []; + + /** + * findMany + */ + + // results.push(await measure("drizzle-findMany", db.query.Customer.findMany())); + results.push( + await measure("drizzle-select-findMany", db.select().from(schema.Customer)) + ); + + // results.push( + // await measure( + // "drizzle-findMany-filter-paginate-order", + // db.query.Customer.findMany({ + // where: eq(schema.Customer.isActive, true), + // orderBy: [desc(schema.Customer.createdAt)], + // offset: 0, + // limit: 10, + // }) + // ) + // ); + results.push( + await measure( + "drizzle-select-findMany-filter-paginate-order", + db + .select() + .from(schema.Customer) + .where(eq(schema.Customer.isActive, true)) + .orderBy(desc(schema.Customer.createdAt)) + .offset(0) + .limit(10) + ) + ); + + // results.push( + // await measure( + // "drizzle-findMany-1-level-nesting", + // db.query.Customer.findMany({ + // with: { + // orders: true, + // }, + // }) + // ) + // ); + results.push( + await measure( + "drizzle-select-findMany-1-level-nesting", + db + .select({ + customer: schema.Customer, + orders: schema.Order, + }) + .from(schema.Customer) + .innerJoin( + schema.Order, + eq(schema.Order.customerId, schema.Customer.id) + ) + ) + ); + + /** + * findFirst + */ + + // results.push(await measure("drizzle-findFirst", db.query.Customer.findFirst())); + results.push( + await measure( + "drizzle-select-findFirst", + db.select().from(schema.Customer).limit(1) + ) + ); + + // results.push( + // await measure( + // "drizzle-findFirst-1-level-nesting", + // db.query.Customer.findFirst({ + // with: { + // orders: true, + // }, + // }) + // ) + // ); + const firstCustomerQuery = db.$with("first_customer").as(db.select().from(schema.Customer).limit(1)); + results.push( + await measure( + "drizzle-select-findFirst-1-level-nesting", + db + .with(firstCustomerQuery) + .select({ + customer: { + id: firstCustomerQuery.id, + createdAt: firstCustomerQuery.createdAt, + name: firstCustomerQuery.name, + email: firstCustomerQuery.email, + isActive: firstCustomerQuery.isActive, + }, + orders: schema.Order, + }) + .from(firstCustomerQuery) + .innerJoin(schema.Order, eq(schema.Order.customerId, firstCustomerQuery.id)) + ) + ); + + /** + * findUnique + */ + + // results.push( + // await measure( + // "drizzle-findUnique", + // db.query.Customer.findFirst({ + // where: eq(schema.Customer.id, 1), + // }) + // ) + // ); + results.push( + await measure( + "drizzle-select-findUnique", + db.select().from(schema.Customer).where(eq(schema.Customer.id, 1)) + ) + ); + + // results.push( + // await measure( + // "drizzle-findUnique-1-level-nesting", + // db.query.Customer.findFirst({ + // where: eq(schema.Customer.id, 1), + // with: { + // orders: true, + // }, + // }) + // ) + // ); + results.push( + await measure( + "drizzle-select-findUnique-1-level-nesting", + db + .select() + .from(schema.Customer) + .where(eq(schema.Customer.id, 1)) + .innerJoin( + schema.Order, + eq(schema.Order.customerId, schema.Customer.id) + ) + ) + ); + + /** + * create + */ + + results.push( + await measure( + "drizzle-select-create", + db + .insert(schema.Customer) + .values({ + name: "John Doe", + email: "john.doe@example.com", + isActive: false, + }) + .returning() + ) + ); + + const nestedCreate = db.transaction(async (trx) => { + // Insert customer + const customer = await trx + .insert(schema.Customer) + .values({ + name: "John Doe", + email: "john.doe@example.com", + isActive: false, + }) + .returning({id: schema.Customer.id}); + + const customerId = customer[0].id; + + // Insert order with the associated customerId + const insertedOrder = await trx + .insert(schema.Order) + .values({ + customerId: customerId, + date: `${new Date().toISOString()}`, + totalAmount: "100.5", + }) + .returning({id: schema.Order.id}); + + const orderId = insertedOrder[0].id; + + // Insert products with the associated orderId + await trx.insert(schema._OrderProducts).values([ + { + A: orderId, + B: 1, + }, + { + A: orderId, + B: 2, + }, + ]); + }); + results.push(await measure("drizzle-select-nested-create", nestedCreate)); + + /** + * update + */ + + results.push( + await measure( + "drizzle-select-update", + db + .update(schema.Customer) + .set({ name: "John Doe Updated" }) + .where(eq(schema.Customer.id, 1))) + ); + + results.push( + await measure( + "drizzle-select-nested-update", + db.transaction(async (trx) => { + // Update customer name + const customerUpdate = trx + .update(schema.Customer) + .set({ name: "John Doe Updated" }) + .where(eq(schema.Customer.id, 1)); + + // Update address + const addressUpdate = trx + .update(schema.Address) + .set({ + street: "456 New St", + }) + .where(eq(schema.Address.customerId, 1)); + + await Promise.all([customerUpdate, addressUpdate]); + }) + ) + ); + + /** + * upsert + */ + results.push( + await measure( + "drizzle-select-upsert", + db + .insert(schema.Customer) + .values({ + id: 1, + name: "John Doe", + email: "john.doe@example.com", + isActive: false, + }) + .onConflictDoUpdate({ + target: schema.Customer.id, + set: { name: "John Doe Upserted" }, + }) + ) + ); + + const nestedUpsert = db.transaction(async (trx) => { + // Update customer name + const customer = await trx + .insert(schema.Customer) + .values({ + id: 1, + name: "John Doe", + email: "john.doe@example.com", + isActive: false, + }) + .onConflictDoUpdate({ + target: schema.Customer.id, + set: { name: "John Doe Upserted" }, + }) + .returning({id: schema.Customer.id}); + const customerId = customer[0].id; + + // Update address + await trx + .insert(schema.Address) + .values({ + street: "456 New St", + city: "Anytown", + postalCode: "12345", + country: "Country", + customerId: customerId, + }) + .onConflictDoUpdate({ + target: schema.Address.customerId, + set: { street: "456 New St" }, + }); + }); + results.push(await measure("drizzle-select-nested-upsert", nestedUpsert)); + + /** + * delete + */ + + results.push( + await measure( + "drizzle-select-delete", + db.delete(schema.Customer).where(eq(schema.Customer.id, 1)) + ) + ); + + await client.end(); // Close the database connection + + return results; +} diff --git a/src/drizzle/drizzle-snippets.ts b/src/drizzle/drizzle-snippets.ts index 5f6ebdb..2115f25 100644 --- a/src/drizzle/drizzle-snippets.ts +++ b/src/drizzle/drizzle-snippets.ts @@ -134,3 +134,132 @@ db.transaction(async (trx) => { "drizzle-delete": ` db.delete(schema.Customer).where(eq(schema.Customer.id, 1))`, }; + +export const drizzleSelectSnippets = { + "drizzle-select-findMany": ` +db.select().from(schema.Customer)`, + + "drizzle-select-findMany-filter-paginate-order": ` +db.select().from(schema.Customer).where(eq(schema.Customer.isActive, true)).orderBy(desc(schema.Customer.createdAt)).offset(0).limit(10)`, + + "drizzle-select-findMany-1-level-nesting": ` +db.select({ + customer: schema.Customer, + orders: schema.Order, +}).from(schema.Customer).innerJoin(schema.Order, eq(schema.Order.customerId, schema.Customer.id))`, + + "drizzle-select-findFirst": ` +db.select().from(schema.Customer).limit(1)`, + + "drizzle-select-findFirst-1-level-nesting": ` +db.select({ + customer: { + id: firstCustomerQuery.id, + createdAt: firstCustomerQuery.createdAt, + name: firstCustomerQuery.name, + email: firstCustomerQuery.email, + isActive: firstCustomerQuery.isActive, + }, + orders: schema.Order, +}).from(firstCustomerQuery).innerJoin(schema.Order, eq(schema.Order.customerId, firstCustomerQuery.id))`, + + "drizzle-select-findUnique": ` +db.select().from(schema.Customer).where(eq(schema.Customer.id, 1))`, + + "drizzle-select-findUnique-1-level-nesting": ` +db.select().from(schema.Customer).where(eq(schema.Customer.id, 1)).innerJoin(schema.Order, eq(schema.Order.customerId, schema.Customer.id))`, + + "drizzle-select-create": ` +db.insert(schema.Customer).values({ + name: "John Doe", + email: "john.doe@example.com", + isActive: false, +}).returning()`, + + "drizzle-select-nested-create": ` +db.transaction(async (trx) => { + // Insert customer + const customer = await trx.insert(schema.Customer).values({ + name: "John Doe", + email: "john.doe@example.com", + isActive: false, + }).returning(); + + const customerId = customer[0].id; + + // Insert order with the associated customerId + const insertedOrder = await trx.insert(schema.Order).values({ + customerId: customerId, + date: \`\${new Date().toISOString()}\`, + totalAmount: "100.5", + }).returning(); + + const orderId = insertedOrder[0].id; + + // Insert products with the associated orderId + await trx.insert(schema._OrderProducts).values([ + { + A: orderId, + B: 1, + }, + { + A: orderId, + B: 2, + }, + ]); +})`, + + "drizzle-select-update": ` +db.update(schema.Customer).set({ name: "John Doe Updated" }).where(eq(schema.Customer.id, 1))`, + + "drizzle-select-nested-update": ` +db.transaction(async (trx) => { + // Update customer name + await trx.update(schema.Customer).set({ name: "John Doe Updated" }).where(eq(schema.Customer.id, 1)); + + // Update address + await trx.update(schema.Address).set({ street: "456 New St" }).where(eq(schema.Address.customerId, 1)); +})`, + + "drizzle-select-upsert": ` +db.insert(schema.Customer).values({ + id: 1, + name: "John Doe", + email: "john.doe@example.com", + isActive: false, +}).onConflictDoUpdate({ + target: schema.Customer.id, + set: { name: "John Doe Upserted" }, +})`, + + "drizzle-select-nested-upsert": ` +db.transaction(async (trx) => { + // Update customer name + const customer = await trx.insert(schema.Customer).values({ + id: 1, + name: "John Doe", + email: "john.doe@example.com", + isActive: false, + }).onConflictDoUpdate({ + target: schema.Customer.id, + set: { name: "John Doe Upserted" }, + }).returning(); + + const customerId = customer[0].id; + + // Update address + await trx.insert(schema.Address).values({ + street: "456 New St", + city: "Anytown", + postalCode: "12345", + country: "Country", + customerId: customerId, + }).onConflictDoUpdate({ + target: schema.Address.customerId, + set: { street: "456 New St" }, + }); +})`, + + "drizzle-select-delete": ` +db.delete(schema.Customer).where(eq(schema.Customer.id, 1))`, +}; \ No newline at end of file diff --git a/src/lib/compare-results.ts b/src/lib/compare-results.ts index 177e2b8..ebf02d9 100644 --- a/src/lib/compare-results.ts +++ b/src/lib/compare-results.ts @@ -36,11 +36,12 @@ function setsAreEqual(setA: Set, setB: Set): boolean { export function compareResults(results: { prismaResults: MultipleBenchmarkRunResults, drizzleResults: MultipleBenchmarkRunResults, + drizzleSelectResults: MultipleBenchmarkRunResults, typeormResults: MultipleBenchmarkRunResults; }) { const orms: ORM[] = ['prisma', 'drizzle', 'typeorm']; - const { prismaResults, typeormResults, drizzleResults } = results; + const { prismaResults, typeormResults, drizzleResults, drizzleSelectResults } = results; // Assuming each ORM has the same set of queries in the same order const numberOfQueries = prismaResults[0].length; @@ -59,6 +60,7 @@ export function compareResults(results: { const idSets: { [key in ORM]: Set } = { prisma: extractIds(prismaResults[iterationIndex][queryIndex].data), drizzle: extractIds(drizzleResults[iterationIndex][queryIndex].data), + "drizzle-select": extractIds(drizzleSelectResults[iterationIndex][queryIndex].data), typeorm: extractIds(typeormResults[iterationIndex][queryIndex].data), }; diff --git a/src/lib/types.ts b/src/lib/types.ts index c36c7fd..4949d15 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,4 +1,4 @@ -export type ORM = "prisma" | "drizzle" | "typeorm"; +export type ORM = "prisma" | "drizzle" | "drizzle-select" | "typeorm"; export type Database = "postgresql" | "mysql"; export type QueryResult = { query: string; diff --git a/src/lib/website-output.ts b/src/lib/website-output.ts index 39902ee..b32d6fb 100644 --- a/src/lib/website-output.ts +++ b/src/lib/website-output.ts @@ -1,7 +1,7 @@ import { readFileSync } from 'fs'; import * as path from 'path'; import { prismaSnippets } from '../prisma/prisma-snippets'; -import { drizzleSnippets } from '../drizzle/drizzle-snippets'; +import { drizzleSelectSnippets, drizzleSnippets } from '../drizzle/drizzle-snippets'; import { typeormSnippets } from '../typeorm/typeorm-snippets'; // Access the command-line arguments const args = process.argv.slice(2); @@ -36,13 +36,15 @@ export default function generateWebsiteOutput(resultsDirectory: string) { const prismaFilePath = path.join(resultsDirectory, 'prisma.csv'); const drizzleFilePath = path.join(resultsDirectory, 'drizzle.csv'); + const drizzleSelectFilePath = path.join(resultsDirectory, 'drizzle-select.csv'); const typeormFilePath = path.join(resultsDirectory, 'typeorm.csv'); const prismaCsv = readFileSync(prismaFilePath, 'utf8'); const drizzleCsv = readFileSync(drizzleFilePath, 'utf8'); + const drizzleSelectCsv = readFileSync(drizzleSelectFilePath, 'utf8'); const typeormCsv = readFileSync(typeormFilePath, 'utf8'); - const data = convertCsvToDataStructure(prismaCsv, drizzleCsv, typeormCsv); + const data = convertCsvToDataStructure(prismaCsv, drizzleCsv, drizzleSelectCsv, typeormCsv); console.log(JSON.stringify(data, null, 2)); } @@ -68,14 +70,16 @@ function getSnippet(snippets: { [key: string]: string }, queryName: string): str // } -function convertCsvToDataStructure(prismaCsv: string, drizzleCsv: string, typeormCsv: string) { +function convertCsvToDataStructure(prismaCsv: string, drizzleCsv: string, drizzleSelectCsv: string, typeormCsv: string) { const prismaData = parseCsvToArray(prismaCsv); const drizzleData = parseCsvToArray(drizzleCsv); + const drizzleSelectData = parseCsvToArray(drizzleSelectCsv); const typeormData = parseCsvToArray(typeormCsv); // Read the source files const prismaSource = readFileSync(path.join(__dirname, '../prisma/prisma-pg.ts'), 'utf8'); const drizzleSource = readFileSync(path.join(__dirname, '../drizzle/drizzle-pg.ts'), 'utf8'); + const drizzleSelectSource = readFileSync(path.join(__dirname, '../drizzle/drizzle-select-pg.ts'), 'utf8'); const typeormSource = readFileSync(path.join(__dirname, '../typeorm/typeorm-pg.ts'), 'utf8'); const createQueriesObject = (headers: string[], data: number[][], snippets: { [key: string]: string }, source: string, orm: string) => { @@ -100,6 +104,9 @@ function convertCsvToDataStructure(prismaCsv: string, drizzleCsv: string, typeor drizzle: { queries: createQueriesObject(drizzleData.headers, drizzleData.data, drizzleSnippets, drizzleSource, 'drizzle') }, + "drizzle-select": { + queries: createQueriesObject(drizzleSelectData.headers, drizzleSelectData.data, drizzleSelectSnippets, drizzleSelectSource, 'drizzle-select') + }, typeorm: { queries: createQueriesObject(typeormData.headers, typeormData.data, typeormSnippets, typeormSource, 'typeorm') } diff --git a/src/run-benchmarks-pg.ts b/src/run-benchmarks-pg.ts index 42eeb71..ce38e28 100644 --- a/src/run-benchmarks-pg.ts +++ b/src/run-benchmarks-pg.ts @@ -5,6 +5,7 @@ import { prismaPg } from "./prisma/prisma-pg"; import { typeormPg } from "./typeorm/typeorm-pg"; import { drizzlePg } from "./drizzle/drizzle-pg"; import { compareResults } from "./lib/compare-results"; +import { drizzleSelectPg } from "./drizzle/drizzle-select-pg"; export default async function runBenchmarksPg( benchmarkOptions: BenchmarkOptions @@ -29,6 +30,14 @@ export default async function runBenchmarksPg( } writeResults("drizzle", "postgresql", drizzleResults, benchmarkOptions, resultsDirectoryTimestamp); + const drizzleSelectResults: MultipleBenchmarkRunResults = []; + for (let i = 0; i < iterations; i++) { + await preparePg({ databaseUrl, size, fakerSeed }); + const results = await drizzleSelectPg(databaseUrl); + drizzleSelectResults.push(results); + } + writeResults("drizzle-select", "postgresql", drizzleSelectResults, benchmarkOptions, resultsDirectoryTimestamp); + const typeormResults: MultipleBenchmarkRunResults = []; for (let i = 0; i < iterations; i++) { await preparePg({ databaseUrl, size, fakerSeed }); @@ -42,6 +51,7 @@ export default async function runBenchmarksPg( compareResults({ prismaResults, drizzleResults, + drizzleSelectResults, typeormResults });