UNPKG

apemandb

Version:
45 lines (40 loc) 1.31 kB
/** * Create seeds from files. * @function fromFiles */ 'use strict' const colorprint = require('colorprint') const aglob = require('aglob') const path = require('path') const { pascalcase } = require('stringcase') const applySeed = require('./apply_seed') /** @lends fromFiles */ function fromFiles (models, pattern) { let seeds = {} aglob.sync(pattern) .filter((filename) => !/^_/.test(path.basename(filename))) .forEach((filename) => { let modelName = fromFiles.modelNameForFile(filename) let isKnownModel = models.hasOwnProperty(modelName) if (!isKnownModel) { colorprint.warn(`[apemandb] Skip seeding for unknown model: ${modelName}`) return } seeds[ modelName ] = function seed (model, options) { let data = require(path.resolve(filename)) return applySeed(model, data, options) } }) let shouldWarn = pattern && pattern.length && !Object.keys(seeds).length if (shouldWarn) { colorprint.warn('[apemandb] Seed not found with pattern: ', pattern) } return seeds } Object.assign(fromFiles, { modelNameForFile (filename) { let basename = path.basename(filename, path.extname(filename)) return pascalcase(basename.replace(/^\d+\./, '').replace(/[._]seed$/, '')) } }) module.exports = fromFiles