src/lib/commands/run/run-logger.js
import chalk from 'chalk';
import logSymbols from 'log-symbols';
import { Spinner } from 'clui';
import BaseLogger from '../../utils/base-logger';
import { MdSeedRunner } from '../../core';
/**
* Run Logger
*/
export default class RunLogger extends BaseLogger {
constructor() {
super();
this.spinner = new Spinner();
}
/**
* Log next notification
* @param {Object} notification notification to log
* @param {string} notification.type operation type
* @param {Object} notification.payload operation payload
*/
next({ type, payload }) {
this.spinner.stop();
switch (type) {
case MdSeedRunner.operations.MONGOOSE_CONNECT_START:
this.spinner.message('Trying to connect to MongoDB...');
this.spinner.start();
break;
case MdSeedRunner.operations.MONGOOSE_CONNECT_SUCCESS:
console.log(`${logSymbols.success} Successfully connected to MongoDB!`);
break;
case MdSeedRunner.operations.MONGOOSE_DROP_START:
this.spinner.message('Droping database...');
this.spinner.start();
break;
case MdSeedRunner.operations.MONGOOSE_DROP_SUCCESS:
console.log(`${logSymbols.success} Database dropped!`);
break;
case MdSeedRunner.operations.ALL_SEEDERS_START:
console.log();
console.log(`${chalk.cyan('Seeding Results:')}`);
break;
case MdSeedRunner.operations.ALL_SEEDERS_FINISH:
console.log();
console.log(`${logSymbols.success} Done.`);
break;
case MdSeedRunner.operations.SEEDER_START:
this.spinner.message(payload.name);
this.spinner.start();
break;
case MdSeedRunner.operations.SEEDER_SUCCESS:
if (payload.results && payload.results.run) {
console.log(
`${logSymbols.success} ${payload.name}: ${chalk.gray(
payload.results.created
)}`
);
} else {
console.log(`${chalk.gray('-')} ${payload.name}: ${chalk.gray(0)}`);
}
break;
}
}
/**
* Log error
* @param {Object} error error to log
* @param {string} error.type error type
* @param {Object} error.payload error payload
*/
error({ type, payload }) {
this.spinner.stop();
switch (type) {
case MdSeedRunner.operations.MONGOOSE_CONNECT_ERROR:
console.log(`${logSymbols.error} Unable to connected to MongoDB!`);
break;
case MdSeedRunner.operations.MONGOOSE_DROP_ERROR:
console.log(`${logSymbols.error} Unable to drop database!`);
break;
case MdSeedRunner.operations.SEEDER_ERROR:
console.log(`${logSymbols.error} ${payload.name}`);
break;
}
if (payload && payload.error) console.error(payload.error);
}
}