-
-
Notifications
You must be signed in to change notification settings - Fork 158
/
umzug.mjs
41 lines (37 loc) · 1.09 KB
/
umzug.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { createRequire } from "module";
const require = createRequire(import.meta.url);
const { Umzug, SequelizeStorage } = require('umzug');
const { Sequelize, DataTypes } = require('sequelize');
const path = require('path');
const sequelize = new Sequelize({
dialect: 'sqlite',
storage: './db.sqlite',
logging: process.env.SEQUELIZE_LOG === 'true',
});
export const migrator = new Umzug({
migrations: {
glob: ['migrations/*.{js,cjs,mjs}', { cwd: path.dirname(import.meta.url.replace('file://', '')) }],
resolve: params => {
if (params.path.endsWith('.mjs') || params.path.endsWith('.js')) {
const getModule = () => import(`file:///${params.path.replace(/\\/g, '/')}`)
return {
name: params.name,
path: params.path,
up: async upParams => (await getModule()).up(upParams),
down: async downParams => (await getModule()).down(downParams),
}
}
return {
name: params.name,
path: params.path,
...require(params.path),
}
}
},
context: { sequelize, DataTypes },
storage: new SequelizeStorage({
sequelize,
}),
logger: console,
});
migrator.runAsCLI()