@ntlab/sequelize-manager
v1.1.1
Published
Sequelize model manager
Downloads
10
Readme
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.js
Usage
Sequelize Model Manager constructor accepts an options described below:
modeldir
: The path which contains models will be looked forextensiondir
: The extension directory, will usemodeldir/extension
if not specifiedhookdir
: The hook directory, will usemodeldir/hook
if not specifieddatadir
: The data directory, will usemodeldir/data
if not specifiedextenddir
: The extend directory, will usemodeldir/extend
if not specifiedaddondir
: The addon directory, will usemodeldir/addon
if not specifiedfixturedir
: The fixture directory, will usemodeldir/fixture
if not specifiedonconnect
: A function which returnsPromise
and 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}});
})();