Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* tslint:disable:no-console */
- import { join } from 'path';
- import { readJsonFileSync } from '@feathers-plus/test-utils';
- import { App } from './app.interface'
- // !code: imports // !end
- // Determine if command line argument exists for seeding data
- let ifSeedServices = ['--seed', '-s'].some(str => process.argv.slice(2).includes(str));
- // Get generated fake data // todo: get from the app instance
- let fakeData = readJsonFileSync(join(__dirname, '../seeds/fake-data.json')) || {};
- // Get generated services // todo: get from the app instance
- let services = (readJsonFileSync(join(__dirname, '../feathers-gen-specs.json')) || {}).services;
- // !code: init
- function areDbChangesAllowed(testConfig) {
- let { environmentsAllowingSeedData = [] } = testConfig
- return environmentsAllowingSeedData.includes(process.env.NODE_ENV);
- }
- // !end
- export default async function (app: App) {
- // !code: func_init // !end
- if (!ifSeedServices) return;
- if (!areDbChangesAllowed(app.get("tests"))) return;
- if (!Object.keys(fakeData).length) {
- console.log('Cannot seed services as seed/fake-data.json doesn\'t have seed data.');
- return;
- }
- if (!services || !Object.keys(services).length) {
- console.log('Cannot seed services as feathers-gen-specs.json has no services.');
- return;
- }
- for (const serviceName in services) {
- if (services.hasOwnProperty(serviceName)) {
- const { name, adapter, path } = services[serviceName];
- // !<DEFAULT> code: seed_select
- const doSeed = adapter !== 'generic';
- // !end
- if (doSeed) {
- if (fakeData[name] && fakeData[name].length) {
- try {
- const service = app.service(path);
- // !<DEFAULT> code: seed_try
- const deleted = await service.remove(null);
- const result = await service.create(fakeData[name]);
- console.log(`Seeded service ${name} on path ${path} deleting ${deleted.length} records, adding ${result.length}.`);
- // !end
- } catch (err) {
- console.log(`Error on seeding service ${name} on path ${path}`, err.message);
- }
- } else {
- console.log(`Not seeding service ${name} on path ${path}. No seed data.`);
- }
- } else {
- console.log(`Not seeding generic service ${name} on path ${path}.`);
- }
- }
- }
- // !code: func_return // !end
- };
- // !code: funcs // !end
- // !code: end // !end
Add Comment
Please, Sign In to add comment