Skip to content

Commit

Permalink
chore: add test with 100.000 sqlite variables
Browse files Browse the repository at this point in the history
  • Loading branch information
timsuchanek committed Jul 3, 2020
1 parent abf789f commit 776ca1c
Show file tree
Hide file tree
Showing 6 changed files with 122 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -154,4 +154,6 @@ exports[`runtime new-line: new-line example should succeed 1`] = `"success"`;

exports[`runtime restart: restart example should succeed 1`] = `"success"`;

exports[`runtime sqlite-variable-limit: sqlite-variable-limit example should succeed 1`] = `"success"`;

exports[`runtime transaction: transaction example should succeed 1`] = `"success"`;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# !dev.db
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
const { PrismaClient } = require('@prisma/client')
const pMap = require('p-map')
const zlib = require('zlib')
const fs = require('fs')
const path = require('path')

module.exports = async () => {
const prisma = new PrismaClient()
const db = path.join(__dirname, 'dev.db')
if (!fs.existsSync(db)) {
await uncompressFile(db)
}

const result = await prisma.user.findMany({
include: {
posts: true,
},
})

prisma.disconnect()
}

if (require.main === module) {
module.exports()
// seed()
// compress()
}

async function seed() {
const prisma = new PrismaClient()
const arr = new Array(100000).fill()
await pMap(
arr,
async (_, i) => {
await prisma.user.create({
data: {
email: `a+${i}@hey.com`,
name: `Bob`,
posts: {
create: new Array(1).fill(undefined).map((_, i) => ({
published: true,
title: '',
})),
},
},
})

if (i % 1000 === 0) {
console.log(`Done with ${i}`)
}
},
{ concurrency: 20 },
)
prisma.disconnect()
}

async function compressFile(filename) {
return new Promise((resolve, reject) => {
const compress = zlib.createBrotliCompress()
const input = fs.createReadStream(filename)
const output = fs.createWriteStream(filename + '.br')

input.pipe(compress).pipe(output)
output.on('finish', () => {
resolve()
})
output.on('error', (ex) => {
reject(ex)
})
})
}

async function uncompressFile(filename) {
return new Promise((resolve, reject) => {
const decompress = zlib.createBrotliDecompress()
const input = fs.createReadStream(filename + '.br')
const output = fs.createWriteStream(filename)

input.pipe(decompress).pipe(output)
output.on('finish', () => {
resolve()
})
output.on('error', (ex) => {
reject(ex)
})
})
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"shouldSucceed": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
datasource db {
provider = "sqlite"
url = "file:dev.db"
default = true
}

generator client {
provider = "prisma-client-js"
}

// / User model comment
model User {
id String @default(uuid()) @id
email String @unique
// / name comment
name String?
posts Post[]
}

model Post {
id String @default(cuid()) @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
published Boolean
title String
content String?
authorId String?
author User? @relation(fields: [authorId], references: [id])
}

0 comments on commit 776ca1c

Please sign in to comment.