1
1
const MSTATE = '__dbmigrate_state__' ;
2
+ const log = require ( 'db-migrate-shared' ) . log ;
2
3
3
4
module . exports = {
4
- init : function ( driver , internals ) {
5
- if ( internals . dryRun ) {
6
- return Promise . resolve ( ) ;
7
- }
8
-
9
- return driver . _createKV ( internals . migrationState ) ;
10
- } ,
11
-
12
- startMigration : async function ( driver , file , internals ) {
13
- let state = await driver . _getKV ( internals . migrationState , MSTATE ) ;
14
-
15
- if ( internals . dryRun ) {
16
- return Promise . resolve ( ) ;
17
- }
18
-
5
+ lockState : async function ( driver , state , internals ) {
19
6
if ( ! state ) {
20
- await driver . _insertKV (
7
+ return driver . _insertKV (
21
8
internals . migrationState ,
22
9
MSTATE ,
23
10
JSON . stringify ( {
@@ -29,15 +16,36 @@ module.exports = {
29
16
} )
30
17
) ;
31
18
} else {
19
+ state = state . value ;
32
20
state = JSON . parse ( state ) ;
33
21
state . s . date = new Date ( ) ;
34
- await driver . _updateKV (
22
+ return driver . _updateKV (
35
23
internals . migrationState ,
36
24
MSTATE ,
37
25
38
26
JSON . stringify ( state )
39
27
) ;
40
28
}
29
+ } ,
30
+
31
+ init : async function ( driver , internals ) {
32
+ await driver . _createKV ( internals . migrationState ) ;
33
+ if ( ! internals . dryRun ) {
34
+ let state = await driver . _getKV ( internals . migrationState , MSTATE ) ;
35
+ return module . exports . lockState ( driver , state , internals ) ;
36
+ }
37
+
38
+ return Promise . resolve ( ) ;
39
+ } ,
40
+
41
+ startMigration : async function ( driver , file , internals ) {
42
+ let state = await driver . _getKV ( internals . migrationState , MSTATE ) ;
43
+
44
+ if ( internals . dryRun ) {
45
+ return Promise . resolve ( ) ;
46
+ }
47
+
48
+ await module . exports . lockState ( driver , state , internals ) ;
41
49
42
50
return driver . _insertKV (
43
51
internals . migrationState ,
@@ -47,7 +55,9 @@ module.exports = {
47
55
} ,
48
56
49
57
update : function ( driver , file , state , internals ) {
58
+ console . log ( 'called' ) ;
50
59
if ( internals . dryRun ) {
60
+ log . info ( `[state] update state` ) ;
51
61
return Promise . resolve ( ) ;
52
62
}
53
63
@@ -59,7 +69,10 @@ module.exports = {
59
69
return Promise . resolve ( ) ;
60
70
}
61
71
62
- let state = await driver . _getKV ( internals . migrationState , MSTATE ) ;
72
+ let { value : state } = await driver . _getKV (
73
+ internals . migrationState ,
74
+ MSTATE
75
+ ) ;
63
76
state = JSON . parse ( state ) ;
64
77
state . s . date = new Date ( ) ;
65
78
return driver . _updateKV (
@@ -70,11 +83,15 @@ module.exports = {
70
83
} ,
71
84
72
85
step : async function ( driver , step , internals ) {
86
+ log . verbose ( `[state] proceeded to step ${ step } ` ) ;
73
87
if ( internals . dryRun ) {
74
88
return Promise . resolve ( ) ;
75
89
}
76
90
77
- let state = await driver . _getKV ( internals . migrationState , MSTATE ) ;
91
+ let { value : state } = await driver . _getKV (
92
+ internals . migrationState ,
93
+ MSTATE
94
+ ) ;
78
95
state = JSON . parse ( state ) ;
79
96
state . s . date = new Date ( ) ;
80
97
state . s . step = step ;
@@ -90,7 +107,10 @@ module.exports = {
90
107
return Promise . resolve ( ) ;
91
108
}
92
109
93
- let state = await driver . _getKV ( internals . migrationState , MSTATE ) ;
110
+ let { value : state } = await driver . _getKV (
111
+ internals . migrationState ,
112
+ MSTATE
113
+ ) ;
94
114
state = JSON . parse ( state ) ;
95
115
state . s . date = new Date ( ) ;
96
116
state . s . fin = 1 ;
0 commit comments