@@ -13,92 +13,6 @@ const TOTAL_VOLUME: &str = "stats_total_volume";
1313const TOTAL_RECIPIENTS_PAID : & str = "stats_total_recipients_paid" ;
1414const STATS_UPDATED : & str = "StatsUpdated" ;
1515
16- pub type Stats = ( u64 , i128 , u64 ) ;
17-
18- fn invoices_key ( env : & Env ) -> Symbol {
19- Symbol :: new ( env, TOTAL_INVOICES )
20- }
21-
22- fn volume_key ( env : & Env ) -> Symbol {
23- Symbol :: new ( env, TOTAL_VOLUME )
24- }
25-
26- fn recipients_paid_key ( env : & Env ) -> Symbol {
27- Symbol :: new ( env, TOTAL_RECIPIENTS_PAID )
28- }
29-
30- pub fn get_stats ( env : & Env ) -> Stats {
31- let invoices = env
32- . storage ( )
33- . instance ( )
34- . get :: < Symbol , u64 > ( & invoices_key ( env) )
35- . unwrap_or ( 0 ) ;
36- let volume = env
37- . storage ( )
38- . instance ( )
39- . get :: < Symbol , i128 > ( & volume_key ( env) )
40- . unwrap_or ( 0 ) ;
41- let recipients_paid = env
42- . storage ( )
43- . instance ( )
44- . get :: < Symbol , u64 > ( & recipients_paid_key ( env) )
45- . unwrap_or ( 0 ) ;
46-
47- ( invoices, volume, recipients_paid)
48- }
49-
50- fn publish_updated ( env : & Env , stats : Stats ) {
51- env. events ( ) . publish (
52- ( Symbol :: new ( env, STATS_UPDATED ) , ) ,
53- (
54- stats. 0 ,
55- stats. 1 ,
56- stats. 2 ,
57- env. ledger ( ) . sequence ( ) ,
58- ) ,
59- ) ;
60- }
61-
62- pub fn record_invoice_created ( env : & Env ) -> Result < ( ) , ContractError > {
63- let ( invoices, volume, recipients_paid) = get_stats ( env) ;
64- let updated_invoices = invoices
65- . checked_add ( 1 )
66- . ok_or ( ContractError :: StatsOverflow ) ?;
67-
68- env. storage ( )
69- . instance ( )
70- . set ( & invoices_key ( env) , & updated_invoices) ;
71-
72- publish_updated ( env, ( updated_invoices, volume, recipients_paid) ) ;
73- Ok ( ( ) )
74- }
75-
76- pub fn record_volume ( env : & Env , amount : i128 ) -> Result < ( ) , ContractError > {
77- let ( invoices, volume, recipients_paid) = get_stats ( env) ;
78- let updated_volume = volume
79- . checked_add ( amount)
80- . ok_or ( ContractError :: StatsOverflow ) ?;
81-
82- env. storage ( )
83- . instance ( )
84- . set ( & volume_key ( env) , & updated_volume) ;
85-
86- publish_updated ( env, ( invoices, updated_volume, recipients_paid) ) ;
87- Ok ( ( ) )
88- }
89-
90- pub fn record_recipients_paid( env : & Env , count : u64 ) -> Result < ( ) , ContractError > {
91- let ( invoices, volume, recipients_paid) = get_stats ( env) ;
92- let updated_recipients_paid = recipients_paid
93- . checked_add ( count)
94- . ok_or ( ContractError :: StatsOverflow ) ?;
95-
96- env. storage ( )
97- . instance ( )
98- . set ( & recipients_paid_key ( env) , & updated_recipients_paid) ;
99-
100- publish_updated ( env, ( invoices, volume, updated_recipients_paid) ) ;
101- Ok ( ( ) )
10216fn total_invoices_key ( env : & Env ) -> Symbol {
10317 Symbol :: new ( env, TOTAL_INVOICES )
10418}
0 commit comments