1
1
import { AWS } from "../config/aws" ;
2
- import { EVENTS } from "../constants/event" ;
2
+ import EVENTS from "../constants/event" ;
3
3
4
4
import ItemServiceProvider from "./item.service" ;
5
5
import TableServiceProvider from "./table.service" ;
@@ -29,14 +29,14 @@ export default class DatabaseServiceProvider {
29
29
/**
30
30
* @param {object } credentials
31
31
*/
32
- async update ( credentials ) {
33
- const { default : AWS } = await import ( "../config/aws" ) ;
34
- AWS . initialize ( credentials ) ;
32
+ static async update ( credentials ) {
33
+ const { default : AWSConfig } = await import ( "../config/aws" ) ;
34
+ AWSConfig . initialize ( credentials ) ;
35
35
}
36
36
37
- async reset ( ) {
38
- const { default : AWS } = await import ( "../config/aws" ) ;
39
- AWS . initialize ( ) ;
37
+ static async reset ( ) {
38
+ const { default : AWSConfig } = await import ( "../config/aws" ) ;
39
+ AWSConfig . initialize ( ) ;
40
40
}
41
41
42
42
/**
@@ -55,44 +55,46 @@ export default class DatabaseServiceProvider {
55
55
*
56
56
* @returns {Array<string> }
57
57
*/
58
- restore ( tables = [ ] , uid , eventEmitter ) {
58
+ restore ( uid , eventEmitter , tables = [ ] ) {
59
59
const queue = [ ...tables ] ;
60
60
const jobs = queue . splice ( 0 , POOL_SIZE ) ;
61
61
let counter = jobs . length ;
62
62
63
- eventEmitter . on ( EVENTS . END , ( ) => {
64
- if ( queue . length ) {
65
- const job = queue . shift ( ) ;
66
- run ( job ) ;
67
- return ;
68
- }
69
-
70
- if ( -- counter === 0 ) {
71
- eventEmitter . emit ( EVENTS . CLOSE , uid ) ;
72
- }
73
- } ) ;
74
-
75
63
const run = async ( { source, target } ) => {
76
64
const tableName = source ;
77
-
78
65
try {
79
- eventEmitter . emit ( EVENTS . BEGIN , uid , { tableName } ) ;
66
+ eventEmitter . emit ( EVENTS . BEGIN , uid , tableName ) ;
80
67
81
- const restore = TableServiceProvider . restore ( source , target , this ) ;
68
+ const restore = TableServiceProvider . restore ( tableName , target , this ) ;
82
69
70
+ // eslint-disable-next-line no-restricted-syntax
83
71
for await ( const [ ItemCount , TotalItemCount ] of restore ) {
84
72
eventEmitter . emit ( EVENTS . PROGRESS , uid , { tableName, data : [ ItemCount , TotalItemCount ] } ) ;
85
73
}
86
74
87
- eventEmitter . emit ( EVENTS . SUCCESS , uid , { tableName } ) ;
75
+ eventEmitter . emit ( EVENTS . SUCCESS , uid , tableName ) ;
88
76
} catch ( error ) {
89
- eventEmitter . emit ( EVENTS . FAILURE , uid , { tableName , error } ) ;
77
+ // eslint-disable-next-line no-console
90
78
console . error ( error ) ;
91
- } finally {
92
- eventEmitter . emit ( EVENTS . END , uid , { tableName } ) ;
79
+ eventEmitter . emit ( EVENTS . FAILURE , uid , tableName ) ;
93
80
}
81
+
82
+ eventEmitter . emit ( EVENTS . END , uid , tableName ) ;
94
83
} ;
95
84
85
+ eventEmitter . on ( EVENTS . END , ( ) => {
86
+ if ( queue . length ) {
87
+ const job = queue . shift ( ) ;
88
+ run ( job ) ;
89
+ return ;
90
+ }
91
+
92
+ counter -= 1 ;
93
+ if ( counter === 0 ) {
94
+ eventEmitter . emit ( EVENTS . CLOSE , uid ) ;
95
+ }
96
+ } ) ;
97
+
96
98
jobs . map ( run ) ;
97
99
98
100
return tables ;
@@ -109,8 +111,8 @@ export default class DatabaseServiceProvider {
109
111
this . SOURCE . TableService . describe ( sourceTableName ) ,
110
112
] ) ;
111
113
112
- const ItemCount = TargetTable . ItemCount ;
113
- const TotalItemCount = SourceTable . ItemCount ;
114
+ const { ItemCount } = TargetTable ;
115
+ const { ItemCount : TotalItemCount } = SourceTable ;
114
116
115
117
return [ ItemCount , TotalItemCount ] ;
116
118
}
0 commit comments