1.1.1 • Published 1 year ago
@ntlab/sequelize-manager v1.1.1
Sequelize Model Manager
Sequelize Model Manager provides functionality to handle loading, applying some extensions to model, synchronize models to database, inserting fixtures and so on. The models to manage can be generated using MySQL Workbench Schema Exporter.
The directory layout suggested as follows:
> model <- contains model classes
> addon <- contains handler for all models extension
> data
> lifecycle.json
> tostring.json
> extend <- contains model extension
> extension <- contains model attributes extension
> fixture <- contains fixture data
> Model1.json
> hook <- contains lifecycle handler
> audit.js
> Model1.js
> Model2.jsUsage
Sequelize Model Manager constructor accepts an options described below:
modeldir: The path which contains models will be looked forextensiondir: The extension directory, will usemodeldir/extensionif not specifiedhookdir: The hook directory, will usemodeldir/hookif not specifieddatadir: The data directory, will usemodeldir/dataif not specifiedextenddir: The extend directory, will usemodeldir/extendif not specifiedaddondir: The addon directory, will usemodeldir/addonif not specifiedfixturedir: The fixture directory, will usemodeldir/fixtureif not specifiedonconnect: A function which returnsPromiseand called when finishingconnectToDatase()onpopulate: A function which called when populating each row form fixture
An example usage of Sequelize Model Manager shown below:
const SequelizeManager = require('@ntlab/sequelize-manager');
const db = new SequelizeManager({
modeldir: path.join(__dirname, 'model'),
});
(async function run() {
await db.init({
dialect: 'sqlite',
storage: './data/mydb.sqlite'
});
await db.connectDatabase();
await db.syncModels();
await db.loadFixtures();
// find a row in database
const m = await db.Model1.findOne({where: {Id: 990}});
})();