@@ -16,9 +16,11 @@ use std::sync::Arc;
16
16
use std:: time:: Duration ;
17
17
use tokio:: time:: delay_for;
18
18
19
+ pub ( crate ) type Aggregate = Arc < RwLock < HashMap < ChannelId , EventAggregate > > > ;
20
+
19
21
#[ derive( Default , Clone ) ]
20
22
pub struct EventAggregator {
21
- aggregate : Arc < RwLock < HashMap < String , EventAggregate > > > ,
23
+ aggregate : Aggregate ,
22
24
}
23
25
24
26
pub fn new_aggr ( channel_id : & ChannelId ) -> EventAggregate {
@@ -33,16 +35,16 @@ async fn store(
33
35
db : & DbPool ,
34
36
channel_id : & ChannelId ,
35
37
logger : & Logger ,
36
- aggr : Arc < RwLock < HashMap < String , EventAggregate > > > ,
38
+ aggr : Aggregate ,
37
39
) {
38
40
let mut recorder = aggr. write ( ) . await ;
39
- let ev_aggr: Option < & EventAggregate > = recorder. get ( & channel_id. to_string ( ) ) ;
41
+ let ev_aggr: Option < & EventAggregate > = recorder. get ( channel_id) ;
40
42
if let Some ( data) = ev_aggr {
41
43
if let Err ( e) = insert_event_aggregate ( & db, & channel_id, data) . await {
42
44
error ! ( & logger, "{}" , e; "eventaggregator" => "store" ) ;
43
45
} else {
44
46
// reset aggr
45
- recorder. insert ( channel_id. to_string ( ) , new_aggr ( & channel_id) ) ;
47
+ recorder. insert ( channel_id. to_owned ( ) , new_aggr ( & channel_id) ) ;
46
48
} ;
47
49
}
48
50
}
@@ -75,11 +77,11 @@ impl EventAggregator {
75
77
let channel_id = channel. id ;
76
78
let logger = app. logger . clone ( ) ;
77
79
78
- let mut aggr: & mut EventAggregate = match recorder. get_mut ( & channel. id . to_string ( ) ) {
80
+ let mut aggr: & mut EventAggregate = match recorder. get_mut ( & channel. id ) {
79
81
Some ( aggr) => aggr,
80
82
None => {
81
83
// insert into
82
- recorder. insert ( channel. id . to_string ( ) , new_aggr ( & channel. id ) ) ;
84
+ recorder. insert ( channel. id , new_aggr ( & channel. id ) ) ;
83
85
84
86
// spawn async task that persists
85
87
// the channel events to database
@@ -102,7 +104,7 @@ impl EventAggregator {
102
104
}
103
105
104
106
recorder
105
- . get_mut ( & channel. id . to_string ( ) )
107
+ . get_mut ( & channel. id )
106
108
. expect ( "should have aggr, we just inserted" )
107
109
}
108
110
} ;
0 commit comments