A plugin for @mtti/microservice which connects to a database with Sequelize when the microservice starts.
If the @mtti/microservice-nats plugin is also in use, models with exportResource
set to true
are exposed over NATS with @mtti/nats-rest.
// main.js
const Microservice = require('@mtti/microservice');
const sequelizePlugin = require('@mtti/microservice-sequelize');
const models = require('./models');
const service = new Microservice('myservice');
/*
// Set database URL manually instead of DB_SERVER env variable.
service.configure({
dbServer: 'postgres://user:pass@localhost:5432/myservice'
});
*/
service.use(sequelizePlugin(models));
// Models are available, keyed by name, under service.models
service.start()
.catch((err) => {
console.log(err);
process.exit(1);
})
// models.js
const document = require('document.model');
module.exports = [
document,
];
// document.model.js
return (sequelize, DataTypes) => {
const document = sequelize.define('document', {
id: {
primaryKey: true,
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
},
title: {
type: DataTypes.TEXT,
},
body: {
type: DataTypes.TEXT,
},
});
/*
document.associate = (models) => {
model.hasOne(models.user);
};
*/
return document;
};