1 | 'use strict'
|
2 |
|
3 | const fastifyPlugin = require('fastify-plugin')
|
4 | const Sequelize = require('sequelize')
|
5 | const pkg = require('../package.json')
|
6 |
|
7 | const defaults = {
|
8 | instance: 'sequelize',
|
9 | sequelizeOptions: {}
|
10 | }
|
11 |
|
12 | function 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 |
|
21 |
|
22 | fastify.addHook(
|
23 | 'onClose',
|
24 | (_, done) =>
|
25 | sequelize
|
26 | .close()
|
27 | .finally(done)
|
28 | )
|
29 |
|
30 | done()
|
31 | }
|
32 |
|
33 | module.exports = fastifyPlugin(
|
34 | sequelizePlugin,
|
35 | {
|
36 | fastify: '4.x',
|
37 | name: pkg.name
|
38 | }
|
39 | )
|