sails-hook-blacksails
Version:
A Sails Micro-app architecture framework
59 lines (56 loc) • 1.45 kB
JavaScript
import _ from 'lodash';
import faker from 'faker';
module.exports = {
/**
*
* Generate seed data
* @param {*} {
* size,
* model,
* data,
* include,
* locales = ['zh_TW', 'zh_CN', 'en', 'de'],
* }
* @returns {Array}
*/
async create({
size,
model,
data,
include,
locales = ['zh_TW', 'zh_CN', 'en', 'de'],
}) {
const items = [];
try {
const inputHasNull = ValidatorHelper.checkNull({
size,
model,
});
sails.log.debug(`[SeedHelper] Create Seed Data for model ${model.name}...`);
if (inputHasNull) {
throw Error(MESSAGE.BAD_REQUEST.NO_REQUIRED_PARAMETER(inputHasNull));
}
// eslint-disable-next-line
const add = (data, options) => {
// sails.log('[SeedHelper] Add Seed=>', data, options);
return new Promise((resolve, reject) =>
model
.create(data, options)
.then(result => resolve(result.get({ plain: true })))
.catch(err => reject(err)));
};
_.range(size).forEach((i) => {
faker.seed(parseInt(i + new Date().getTime(), 10));
faker.locale = locales[faker.random.number(locales.length - 1)];
items.push(add(data(i), {
include,
raw : true,
}));
});
return await Promise.all(items);
} catch (e) {
sails.log.error(e);
throw e;
}
},
};