Home Reference Source Test

src/lib/commands/run/run.js

import config from '../../config';
import { MdSeedRunner } from '../../core';
import { validateUserConfig } from '../../utils/helpers';

import RunLogger from './run-logger';

/**
 * Run seeders
 * @param  {Object}   [options={}]          Options
 * @param  {string[]} [options.selectedSeeders=[]]  Selected seeders to run.
 *                                                  When empty, run all seeders.
 * @param  {boolean}   [options.dropDatabase=false] Drop database before running?
 * @return {Promise}
 */
const run = async ({ selectedSeeders = [], dropDatabase = false } = {}) => {
  validateUserConfig();

  // get relevant user-config
  const { connect, dropdb, seedersList } = config.loadUserConfig();

  // create logger
  const logger = new RunLogger();

  // create runner
  const runner = new MdSeedRunner({ connect, dropdb, seedersList });

  // run seeders
  const observable = runner.run({ selectedSeeders, dropDatabase });

  // subscribe logger
  observable.subscribe(logger.asObserver());

  // wait for runner
  await observable.toPromise();
};

export default run;