@@ -10,10 +10,10 @@ const logger = require('../logger').migrate;
10
10
* @param {Promise } Promise
11
11
* @returns {Promise }
12
12
*/
13
- exports . up = function ( knex /*, Promise*/ ) {
13
+ exports . up = async function ( knex /*, Promise*/ ) {
14
14
logger . info ( '[' + migrate_name + '] Migrating Up...' ) ;
15
15
16
- return knex . schema . createTable ( 'ssl_passthrough_host' , ( table ) => {
16
+ await knex . schema . createTable ( 'ssl_passthrough_host' , ( table ) => {
17
17
table . increments ( ) . primary ( ) ;
18
18
table . dateTime ( 'created_on' ) . notNull ( ) ;
19
19
table . dateTime ( 'modified_on' ) . notNull ( ) ;
@@ -24,26 +24,44 @@ exports.up = function (knex/*, Promise*/) {
24
24
table . integer ( 'forwarding_port' ) . notNull ( ) . unsigned ( ) ;
25
25
table . integer ( 'enabled' ) . notNull ( ) . unsigned ( ) . defaultTo ( 1 ) ;
26
26
table . json ( 'meta' ) . notNull ( ) ;
27
- } ) . then ( ( ) => {
28
- logger . info ( '[' + migrate_name + '] Table created' ) ;
29
- } )
30
- . then ( ( ) => {
31
- return knex . schema . table ( 'user_permission' , ( table ) => {
32
- table . string ( 'ssl_passthrough_hosts' ) . notNull ( ) ;
33
- } )
34
- . then ( ( ) => {
35
- return knex ( 'user_permission' ) . update ( 'ssl_passthrough_hosts' , knex . ref ( 'streams' ) ) ;
36
- } )
37
- . then ( ( ) => {
38
- return knex . schema . alterTable ( 'user_permission' , ( table ) => {
39
- table . string ( 'ssl_passthrough_hosts' ) . notNullable ( ) . alter ( ) ;
40
- } ) ;
41
- } )
42
- . then ( ( ) => {
43
- logger . info ( '[' + migrate_name + '] permissions updated' ) ;
44
- } ) ;
45
- } )
46
- ;
27
+ } ) ;
28
+
29
+ logger . info ( '[' + migrate_name + '] Table created' ) ;
30
+
31
+ // Remove unique constraint so name can be used for new table
32
+ await knex . schema . alterTable ( 'user_permission' , ( table ) => {
33
+ table . dropUnique ( 'user_id' ) ;
34
+ } ) ;
35
+
36
+ await knex . schema . renameTable ( 'user_permission' , 'user_permission_old' ) ;
37
+
38
+ // We need to recreate the table since sqlite does not support altering columns
39
+ await knex . schema . createTable ( 'user_permission' , ( table ) => {
40
+ table . increments ( ) . primary ( ) ;
41
+ table . dateTime ( 'created_on' ) . notNull ( ) ;
42
+ table . dateTime ( 'modified_on' ) . notNull ( ) ;
43
+ table . integer ( 'user_id' ) . notNull ( ) . unsigned ( ) ;
44
+ table . string ( 'visibility' ) . notNull ( ) ;
45
+ table . string ( 'proxy_hosts' ) . notNull ( ) ;
46
+ table . string ( 'redirection_hosts' ) . notNull ( ) ;
47
+ table . string ( 'dead_hosts' ) . notNull ( ) ;
48
+ table . string ( 'streams' ) . notNull ( ) ;
49
+ table . string ( 'ssl_passthrough_hosts' ) . notNull ( ) ;
50
+ table . string ( 'access_lists' ) . notNull ( ) ;
51
+ table . string ( 'certificates' ) . notNull ( ) ;
52
+ table . unique ( 'user_id' ) ;
53
+ } ) ;
54
+
55
+ await knex ( 'user_permission_old' ) . select ( '*' , 'streams as ssl_passthrough_hosts' ) . then ( ( data ) => {
56
+ if ( data . length ) {
57
+ return knex ( 'user_permission' ) . insert ( data ) ;
58
+ }
59
+ return Promise . resolve ( ) ;
60
+ } ) ;
61
+
62
+ await knex . schema . dropTableIfExists ( 'user_permission_old' ) ;
63
+
64
+ logger . info ( '[' + migrate_name + '] permissions updated' ) ;
47
65
} ;
48
66
49
67
/**
0 commit comments