UNPKG

854 BJavaScriptView Raw
1'use strict'
2
3const fastifyPlugin = require('fastify-plugin')
4const Sequelize = require('sequelize')
5const pkg = require('../package.json')
6
7const defaults = {
8 instance: 'sequelize',
9 sequelizeOptions: {}
10}
11
12function sequelizePlugin (fastify, opts, done) {
13 const options = Object.assign({}, defaults, opts)
14 const sequelize = new Sequelize(options.sequelizeOptions)
15
16 if (typeof options.instance === 'string' && options.instance) {
17 fastify.decorate(options.instance, sequelize)
18 }
19
20 // close sequelize database connection before shutdown
21 // 'onClose' is triggered when fastify.close() is invoked to stop the server
22 fastify.addHook(
23 'onClose',
24 (_, done) =>
25 sequelize
26 .close()
27 .finally(done)
28 )
29
30 done()
31}
32
33module.exports = fastifyPlugin(
34 sequelizePlugin,
35 {
36 fastify: '4.x',
37 name: pkg.name
38 }
39)