UNPKG

generic-repository

Version:

Generic repository pattern implementation for node.js. Currently supports mongo and in-memory(testing) databases.

68 lines (67 loc) 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class Seed { constructor(repo, identifier, seedFile) { this.repo = repo; this.identifier = identifier || '_name'; this.seedFile = seedFile; } seed() { let _promises = Array(); return this.repo.count().then(count => { if (this.shouldUpdateSeed(this.seedFile, count)) { return this.updateWithSeedData(this.seedFile, _promises); } else if (this.shouldInsertSeed(count)) { return this.insertSeedData(this.seedFile, _promises); } else { console.log('Resource is up-to-date, did not seed ' + this.repo.Type.prototype.constructor.name + ' collection again.'); return Promise.resolve([]); } }); } updateWithSeedData(_data, _promises) { if (Array.isArray(_data.data)) { _promises.push(..._data.data.map((item) => { return this.updateWithDefaults(item); })); } else { _promises.push(this.updateWithDefaults(_data.data)); } return Promise.all(_promises); } updateWithDefaults(item) { return this.repo.update({ [this.identifier]: item[this.identifier] }, item); } insertSeedData(_data, _promises) { if (Array.isArray(_data.data)) { _data.data.forEach((item) => { _promises.push(this.repo.insert(item)); }); } else { _promises.push(this.repo.insert(_data.data)); } return Promise.all(_promises); } shouldUpdateSeed(_data, count) { if (count > 0 && _data.seedAlways) { return true; } else { return false; } } shouldInsertSeed(count) { if (count <= 0) { return true; } else { return false; } } } exports.default = Seed;