@@ -8,81 +8,79 @@ import { TradeAttributes } from './trade';
8
8
9
9
type SaveOrderParams = {
10
10
order : Order ;
11
+ models : InitDBResponse ;
12
+ logger : Logger ;
11
13
} ;
12
14
13
- class OrderRepository {
14
- constructor ( private models : InitDBResponse , private logger : Logger ) { }
15
+ const saveOrder$ = ( {
16
+ order,
17
+ models,
18
+ logger,
19
+ } : SaveOrderParams ) : Observable < OrderInstance > => {
20
+ logger . trace ( `Saving order ${ JSON . stringify ( order ) } into database` ) ;
15
21
16
- public saveOrder$ = ( {
17
- order,
18
- } : SaveOrderParams ) : Observable < OrderInstance > => {
19
- this . logger . trace ( `Saving order ${ JSON . stringify ( order ) } into database` ) ;
22
+ const arbyOrder = convertToArbyOrder ( order ) ;
23
+ const arbyTrades = convertToArbyTrades ( order . trades , order . id ) ;
24
+ // TODO async
25
+ return from ( models . Order . create ( arbyOrder ) ) . pipe (
26
+ mergeMap ( order => {
27
+ return from ( models . Trade . bulkCreate ( arbyTrades ) ) . pipe (
28
+ map ( ( ) => {
29
+ logger . trace ( `Order with id ${ order . id } has been successfully saved` ) ;
30
+ return order ;
31
+ } )
32
+ ) ;
33
+ } )
34
+ ) ;
35
+ } ;
20
36
21
- const arbyOrder = this . convertToArbyOrder ( order ) ;
22
- const arbyTrades = this . convertToArbyTrades ( order . trades , order . id ) ;
23
- // TODO async
24
- return from ( this . models . Order . create ( arbyOrder ) ) . pipe (
25
- mergeMap ( order => {
26
- return from ( this . models . Trade . bulkCreate ( arbyTrades ) ) . pipe (
27
- map ( ( ) => {
28
- this . logger . trace (
29
- `Order with id ${ order . id } has been successfully saved`
30
- ) ;
31
- return order ;
32
- } )
33
- ) ;
34
- } )
35
- ) ;
37
+ const convertToArbyOrder = ( order : Order ) : OrderAttributes => {
38
+ return {
39
+ id : order . id ,
40
+ datetime : order . datetime ,
41
+ timestamp : order . timestamp ,
42
+ lastTradeTimestamp : order . lastTradeTimestamp ,
43
+ status : order . status ,
44
+ symbol : order . symbol ,
45
+ type : order . type ,
46
+ side : order . side ,
47
+ price : order . price ,
48
+ average : order . average ,
49
+ amount : order . amount ,
50
+ filled : order . filled ,
51
+ remaining : order . remaining ,
52
+ cost : order . cost ,
53
+ info : order . info ,
54
+ feeType : order . fee . type ,
55
+ feeCurrency : order . fee . currency ,
56
+ feeRate : order . fee . rate ,
57
+ feeCost : order . fee . cost ,
36
58
} ;
59
+ } ;
37
60
38
- private convertToArbyOrder ( order : Order ) : OrderAttributes {
39
- return {
40
- id : order . id ,
41
- datetime : order . datetime ,
42
- timestamp : order . timestamp ,
43
- lastTradeTimestamp : order . lastTradeTimestamp ,
44
- status : order . status ,
45
- symbol : order . symbol ,
46
- type : order . type ,
47
- side : order . side ,
48
- price : order . price ,
49
- average : order . average ,
50
- amount : order . amount ,
51
- filled : order . filled ,
52
- remaining : order . remaining ,
53
- cost : order . cost ,
54
- info : order . info ,
55
- feeType : order . fee . type ,
56
- feeCurrency : order . fee . currency ,
57
- feeRate : order . fee . rate ,
58
- feeCost : order . fee . cost ,
59
- } ;
60
- }
61
-
62
- private convertToArbyTrades (
63
- trades : Trade [ ] ,
64
- orderId : string
65
- ) : TradeAttributes [ ] {
66
- const result : TradeAttributes [ ] = [ ] ;
67
- trades . forEach ( trade => {
68
- result . push ( {
69
- id : trade . id ,
70
- orderId,
71
- amount : trade . amount ,
72
- datetime : trade . datetime ,
73
- info : trade . info ,
74
- price : trade . price ,
75
- timestamp : trade . timestamp ,
76
- type : trade . type ,
77
- side : trade . side ,
78
- symbol : trade . symbol ,
79
- takerOrMaker : trade . takerOrMaker ,
80
- cost : trade . cost ,
81
- } ) ;
61
+ const convertToArbyTrades = (
62
+ trades : Trade [ ] ,
63
+ orderId : string
64
+ ) : TradeAttributes [ ] => {
65
+ const result : TradeAttributes [ ] = [ ] ;
66
+ trades . forEach ( trade => {
67
+ result . push ( {
68
+ id : trade . id ,
69
+ orderId,
70
+ amount : trade . amount ,
71
+ datetime : trade . datetime ,
72
+ info : trade . info ,
73
+ price : trade . price ,
74
+ timestamp : trade . timestamp ,
75
+ type : trade . type ,
76
+ side : trade . side ,
77
+ symbol : trade . symbol ,
78
+ takerOrMaker : trade . takerOrMaker ,
79
+ cost : trade . cost ,
82
80
} ) ;
81
+ } ) ;
83
82
84
- return result ;
85
- }
86
- }
83
+ return result ;
84
+ } ;
87
85
88
- export { OrderRepository , SaveOrderParams } ;
86
+ export { saveOrder$ , SaveOrderParams } ;
0 commit comments