loopback4-seeder
Version:
Run seeders to populate database
46 lines • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Seeder = exports.loadByModel = exports.asSeed = exports.SEEDER = void 0;
const core_1 = require("@loopback/core");
const keys_1 = require("./keys");
const index_1 = require("./index");
/**
* Name of the seed extension point
*/
exports.SEEDER = 'seeder';
/**
* A `BindingTemplate` function to configure the binding as a seed.
*
* @param binding - Binding object
*/
function asSeed(binding) {
return binding
.apply((0, core_1.extensionFor)(exports.SEEDER))
.tag({ namespace: keys_1.SEEDS_NAMESPACE })
.inScope(core_1.BindingScope.SINGLETON);
}
exports.asSeed = asSeed;
const loadByModel = async (items, repository$, type) => {
(0, index_1.debug)('[INFO] Seeding data for model "%s"', type.name);
let repository = await repository$;
await repository.deleteAll();
await Promise.all(items.map(async (item) => {
try {
return await repository.create((new type(item)));
}
catch (e) {
(0, index_1.debug)('[ERROR] %s', e.message);
}
}));
};
exports.loadByModel = loadByModel;
class Seeder {
beforeSeed() {
return Promise.resolve(undefined);
}
async loadByModel(items, repository$, type) {
return (0, exports.loadByModel)(items, repository$, type);
}
}
exports.Seeder = Seeder;
//# sourceMappingURL=types.js.map