2018-04-04 10:15:28 +08:00
|
|
|
const fs = require('fs');
|
|
|
|
const dataDir = require('../services/data_dir');
|
|
|
|
|
|
|
|
fs.unlinkSync(dataDir.DOCUMENT_PATH);
|
|
|
|
|
|
|
|
require('../entities/entity_constructor');
|
|
|
|
const optionService = require('../services/options');
|
|
|
|
const sqlInit = require('../services/sql_init');
|
|
|
|
const myScryptService = require('../services/my_scrypt');
|
|
|
|
const passwordEncryptionService = require('../services/password_encryption');
|
|
|
|
const utils = require('../services/utils');
|
|
|
|
const noteService = require('../services/notes');
|
|
|
|
const cls = require('../services/cls');
|
|
|
|
const cloningService = require('../services/cloning');
|
|
|
|
const loremIpsum = require('lorem-ipsum');
|
|
|
|
|
|
|
|
async function setUserNamePassword() {
|
|
|
|
const username = "test";
|
|
|
|
const password = "test";
|
|
|
|
|
|
|
|
await optionService.setOption('username', username);
|
|
|
|
|
|
|
|
await optionService.setOption('passwordVerificationSalt', utils.randomSecureToken(32));
|
|
|
|
await optionService.setOption('passwordDerivedKeySalt', utils.randomSecureToken(32));
|
|
|
|
|
|
|
|
const passwordVerificationKey = utils.toBase64(await myScryptService.getVerificationHash(password));
|
|
|
|
await optionService.setOption('passwordVerificationHash', passwordVerificationKey);
|
|
|
|
|
|
|
|
await passwordEncryptionService.setDataKey(password, utils.randomSecureToken(16));
|
|
|
|
|
2018-07-23 01:56:20 +08:00
|
|
|
await sqlInit.initDbConnection();
|
2018-04-04 10:15:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
const noteCount = parseInt(process.argv[2]);
|
|
|
|
const notes = ['root'];
|
|
|
|
|
|
|
|
function getRandomParentNoteId() {
|
|
|
|
const index = Math.floor(Math.random() * notes.length);
|
|
|
|
|
|
|
|
return notes[index];
|
|
|
|
}
|
|
|
|
|
|
|
|
async function start() {
|
|
|
|
await setUserNamePassword();
|
|
|
|
|
|
|
|
for (let i = 0; i < noteCount; i++) {
|
|
|
|
const title = loremIpsum({ count: 1, units: 'sentences', sentenceLowerBound: 1, sentenceUpperBound: 10 });
|
|
|
|
|
|
|
|
const paragraphCount = Math.floor(Math.random() * Math.random() * 100);
|
|
|
|
const content = loremIpsum({ count: paragraphCount, units: 'paragraphs', sentenceLowerBound: 1, sentenceUpperBound: 15,
|
|
|
|
paragraphLowerBound: 3, paragraphUpperBound: 10, format: 'html' });
|
|
|
|
|
|
|
|
const {note} = await noteService.createNote(getRandomParentNoteId(), title, content);
|
|
|
|
|
|
|
|
console.log(`Created note ${i}: ${title}`);
|
|
|
|
|
|
|
|
notes.push(note.noteId);
|
|
|
|
}
|
|
|
|
|
|
|
|
// we'll create clones for 20% of notes
|
2018-04-17 04:26:47 +08:00
|
|
|
for (let i = 0; i < (noteCount / 50); i++) {
|
2018-04-04 10:15:28 +08:00
|
|
|
const noteIdToClone = getRandomParentNoteId();
|
|
|
|
const parentNoteId = getRandomParentNoteId();
|
|
|
|
const prefix = Math.random() > 0.8 ? "prefix" : null;
|
|
|
|
|
|
|
|
const result = await cloningService.cloneNoteToParent(noteIdToClone, parentNoteId, prefix);
|
|
|
|
|
|
|
|
console.log(`Cloning ${i}:`, result.success ? "succeeded" : "FAILED");
|
|
|
|
}
|
|
|
|
|
|
|
|
process.exit(0);
|
|
|
|
}
|
|
|
|
|
2018-07-23 01:56:20 +08:00
|
|
|
sqlInit.dbReady.then(cls.wrap(start));
|