-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
stat_repository.go
66 lines (54 loc) · 1.4 KB
/
stat_repository.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package mock
import (
"context"
"github.com/taikoxyz/taiko-mono/packages/eventindexer"
)
type StatRepository struct {
stats []*eventindexer.Stat
}
func NewStatRepository() *StatRepository {
return &StatRepository{
stats: make([]*eventindexer.Stat, 0),
}
}
func (r *StatRepository) Save(ctx context.Context, opts eventindexer.SaveStatOpts) (*eventindexer.Stat, error) {
proofReward := ""
if opts.StatType == eventindexer.StatTypeProofReward && opts.ProofReward != nil {
proofReward = opts.ProofReward.String()
}
proofTime := ""
if opts.StatType == eventindexer.StatTypeProofTime && opts.ProofTime != nil {
proofTime = opts.ProofTime.String()
}
stat := &eventindexer.Stat{
ID: 1,
AverageProofTime: proofTime,
AverageProofReward: proofReward,
NumProofs: 1,
NumBlocksAssigned: 1,
StatType: opts.StatType,
}
if opts.FeeTokenAddress != nil {
stat.FeeTokenAddress = *opts.FeeTokenAddress
}
r.stats = append(r.stats, stat)
return stat, nil
}
// FindAll finds each type of unique stat and merges them together
func (r *StatRepository) FindAll(
ctx context.Context,
) ([]*eventindexer.Stat, error) {
return r.stats, nil
}
func (r *StatRepository) Find(
ctx context.Context,
statType string,
feeTokenAddress *string,
) (*eventindexer.Stat, error) {
for _, s := range r.stats {
if s.StatType == statType {
return s, nil
}
}
return nil, nil
}