Skip to content

Instantly share code, notes, and snippets.

@NickBolles
Last active November 20, 2018 22:25
Show Gist options
  • Save NickBolles/d24d4149c42b8d562a5b1992d0ad0f16 to your computer and use it in GitHub Desktop.
Save NickBolles/d24d4149c42b8d562a5b1992d0ad0f16 to your computer and use it in GitHub Desktop.
Feathers seed-data modifications
/* 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment