diff options
author | Chocobozzz <me@florianbigard.com> | 2022-08-03 15:08:36 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2022-08-03 15:08:36 +0200 |
commit | c795e19663a93c24908a7318975f820bac63164f (patch) | |
tree | 149a303be38eedf5aa5a0ec02938f67c75a267fe /server/initializers/migrations | |
parent | fd59208e8ccd796f9ad7e35db82d0c33acfcb92c (diff) | |
download | PeerTube-c795e19663a93c24908a7318975f820bac63164f.tar.gz PeerTube-c795e19663a93c24908a7318975f820bac63164f.tar.zst PeerTube-c795e19663a93c24908a7318975f820bac63164f.zip |
Automatically rebuild native modules on ABI change
Diffstat (limited to 'server/initializers/migrations')
-rw-r--r-- | server/initializers/migrations/0725-node-version.ts | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/server/initializers/migrations/0725-node-version.ts b/server/initializers/migrations/0725-node-version.ts new file mode 100644 index 000000000..d8b9cc750 --- /dev/null +++ b/server/initializers/migrations/0725-node-version.ts | |||
@@ -0,0 +1,66 @@ | |||
1 | import * as Sequelize from 'sequelize' | ||
2 | |||
3 | async function up (utils: { | ||
4 | transaction: Sequelize.Transaction | ||
5 | queryInterface: Sequelize.QueryInterface | ||
6 | sequelize: Sequelize.Sequelize | ||
7 | db: any | ||
8 | }): Promise<void> { | ||
9 | const { transaction } = utils | ||
10 | |||
11 | { | ||
12 | const data = { | ||
13 | type: Sequelize.STRING, | ||
14 | defaultValue: null, | ||
15 | allowNull: true | ||
16 | } | ||
17 | await utils.queryInterface.addColumn('application', 'nodeVersion', data, { transaction }) | ||
18 | } | ||
19 | |||
20 | { | ||
21 | const data = { | ||
22 | type: Sequelize.STRING, | ||
23 | defaultValue: null, | ||
24 | allowNull: true | ||
25 | } | ||
26 | await utils.queryInterface.addColumn('application', 'nodeABIVersion', data, { transaction }) | ||
27 | } | ||
28 | |||
29 | { | ||
30 | const query = `UPDATE "application" SET "nodeVersion" = '${process.version}'` | ||
31 | await utils.sequelize.query(query, { transaction }) | ||
32 | } | ||
33 | |||
34 | { | ||
35 | const nodeABIVersion = parseInt(process.versions.modules) | ||
36 | const query = `UPDATE "application" SET "nodeABIVersion" = ${nodeABIVersion}` | ||
37 | await utils.sequelize.query(query, { transaction }) | ||
38 | } | ||
39 | |||
40 | { | ||
41 | const data = { | ||
42 | type: Sequelize.STRING, | ||
43 | defaultValue: null, | ||
44 | allowNull: false | ||
45 | } | ||
46 | await utils.queryInterface.changeColumn('application', 'nodeVersion', data, { transaction }) | ||
47 | } | ||
48 | |||
49 | { | ||
50 | const data = { | ||
51 | type: Sequelize.STRING, | ||
52 | defaultValue: null, | ||
53 | allowNull: false | ||
54 | } | ||
55 | await utils.queryInterface.changeColumn('application', 'nodeABIVersion', data, { transaction }) | ||
56 | } | ||
57 | } | ||
58 | |||
59 | function down (options) { | ||
60 | throw new Error('Not implemented.') | ||
61 | } | ||
62 | |||
63 | export { | ||
64 | up, | ||
65 | down | ||
66 | } | ||