Created
June 6, 2019 00:36
-
-
Save MuhammadJamaluddin/1ba5b5c9f0bd4a219d19fc18b91c916c to your computer and use it in GitHub Desktop.
some queries results
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fake = require('faker'); | |
const now = require('performance-now'); | |
const fs = require('fs'); | |
const { Book } = require('./index'); | |
let fakeData; | |
const CreateFakeDocument = function CreateFakeDocument(i) { | |
const book = {}; | |
// initiate a bunch of new book info | |
book.id = i; | |
book.title = fake.random.words(3); | |
book.author = fake.name.findName(); | |
book.description = fake.lorem.paragraphs(); | |
book.ratings = { | |
five: fake.random.number(), | |
four: fake.random.number(), | |
three: fake.random.number(), | |
two: fake.random.number(), | |
one: fake.random.number(), | |
}; | |
book.reviews = fake.random.number(); | |
book.links = { | |
kindle: fake.internet.url(), | |
amazon: fake.internet.url(), | |
stores: { | |
audible: fake.internet.url(), | |
barnesAndNoble: fake.internet.url(), | |
walmart: fake.internet.url(), | |
apple: fake.internet.url(), | |
google: fake.internet.url(), | |
abebooks: fake.internet.url(), | |
bookDepository: fake.internet.url(), | |
indigo: fake.internet.url(), | |
alibris: fake.internet.url(), | |
betterWorldBooks: fake.internet.url(), | |
indieBound: fake.internet.url(), | |
}, | |
}; | |
book.type = fake.random.word(); | |
book.pages = fake.random.number({ max: 3000 }); | |
book.publishDate = fake.date.past(); | |
book.publisher = fake.company.companyName(); | |
book.metadata = { | |
originalTitle: book.title, | |
isbn: fake.random.number(), | |
isbn13: fake.random.number(), | |
language: 'English', | |
}; | |
book.image = 'http://lorempixel.com/480/640/abstract/'; | |
if (i % 2 === 0) { | |
book.metadata.series = { | |
name: fake.random.words(2), | |
url: fake.internet.url(), | |
}; | |
} | |
return book; | |
}; | |
const start = now(); | |
const wstream = fs.createWriteStream('./books.json'); | |
// Write the data to the supplied writable stream one million times. | |
// Be attentive to back-pressure. | |
const writeOneMillionTimes = function writeOneMillionTimes(writer, encoding, callback) { | |
let i = -1; | |
function write() { | |
let ok = true; | |
do { | |
i += 1; | |
if (i === 9999999) { | |
// last time! | |
writer.write(JSON.stringify(CreateFakeDocument(i)), encoding, callback); | |
} else { | |
// See if we should continue, or wait. | |
// Don't pass the callback, because we're not done yet. | |
if (i % 10000 === 0) { | |
console.log(`we have generated ${i} documents`); | |
} | |
ok = writer.write(JSON.stringify(CreateFakeDocument(i)), encoding); | |
} | |
} while (i < 9999999 && ok); | |
if (i < 9999999) { | |
// had to stop early! | |
// write some more once it drains | |
writer.once('drain', write); | |
} | |
} | |
write(); | |
}; | |
writeOneMillionTimes(wstream, 'utf-8', () => { | |
console.log(`the whole process took ${Math.floor((now() - start).toFixed(0) / 1000)} seconds`); | |
}); | |
module.exports = { | |
fakeData, | |
CreateFakeDocument, | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment