@@ -11,54 +11,45 @@ export const createWrite = (
11
11
overwrite : OverwriteFunction ,
12
12
deleteStale : DeleteStaleFunction ,
13
13
) => {
14
- return ( stream : WriteStream ) : Promise < void > => {
15
- return new Promise ( ( resolve , reject ) => {
16
- stream . on ( 'data' , ( request : WriteRequest ) => {
17
- switch ( request . message ) {
18
- case 'migrate_table' : {
19
- // Update table schema in the `tables` map
20
- const table = decodeTable ( request . migrate_table . table ) ;
21
- tables [ table . name ] = table ;
22
- break ;
23
- }
24
-
25
- case 'insert' : {
26
- const [ tableName , batches ] = decodeRecord ( request . insert . record ) ;
27
-
28
- if ( ! memoryDB [ tableName ] ) {
29
- memoryDB [ tableName ] = [ ] ;
30
- }
14
+ return async ( stream : WriteStream ) => {
15
+ for await ( const data of stream ) {
16
+ const request = data as WriteRequest ;
17
+ switch ( request . message ) {
18
+ case 'migrate_table' : {
19
+ // Update table schema in the `tables` map
20
+ const table = decodeTable ( request . migrate_table . table ) ;
21
+ tables [ table . name ] = table ;
22
+ break ;
23
+ }
31
24
32
- const tableSchema = tables [ tableName ] ;
33
- const pks = getPrimaryKeys ( tableSchema ) ;
25
+ case 'insert' : {
26
+ const [ tableName , batches ] = decodeRecord ( request . insert . record ) ;
34
27
35
- for ( const batch of batches ) {
36
- //eslint-disable-next-line unicorn/no-array-for-each
37
- for ( const record of batch ) {
38
- overwrite ( tableSchema , pks , record ) ;
39
- }
40
- }
41
- break ;
28
+ if ( ! memoryDB [ tableName ] ) {
29
+ memoryDB [ tableName ] = [ ] ;
42
30
}
43
31
44
- case 'delete' : {
45
- deleteStale ( request . delete ) ;
46
- break ;
47
- }
32
+ const tableSchema = tables [ tableName ] ;
33
+ const pks = getPrimaryKeys ( tableSchema ) ;
48
34
49
- default : {
50
- throw new Error ( `Unknown request message type: ${ request . message } ` ) ;
35
+ for ( const batch of batches ) {
36
+ //eslint-disable-next-line unicorn/no-array-for-each
37
+ for ( const record of batch ) {
38
+ overwrite ( tableSchema , pks , record ) ;
39
+ }
51
40
}
41
+ break ;
52
42
}
53
- } ) ;
54
43
55
- stream . on ( 'finish' , ( ) => {
56
- resolve ( ) ;
57
- } ) ;
44
+ case 'delete' : {
45
+ deleteStale ( request . delete ) ;
46
+ break ;
47
+ }
58
48
59
- stream . on ( 'error' , ( error ) => {
60
- reject ( error ) ;
61
- } ) ;
62
- } ) ;
49
+ default : {
50
+ throw new Error ( `Unknown request message type: ${ request . message } ` ) ;
51
+ }
52
+ }
53
+ }
63
54
} ;
64
55
} ;
0 commit comments