-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathin_memory_database.go
44 lines (38 loc) · 1.01 KB
/
in_memory_database.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
package riemann
type InMemoryDivisorDb struct {
Data map[int]RiemannDivisorSum
}
func (imdb InMemoryDivisorDb) Load() []RiemannDivisorSum {
output := []RiemannDivisorSum{}
for _, value := range imdb.Data {
output = append(output, value)
}
return output
}
func (imdb InMemoryDivisorDb) Upsert(rds []RiemannDivisorSum) {
for _, value := range rds {
imdb.Data[value.N] = value
}
}
func (imdb InMemoryDivisorDb) Summarize() SummaryStats {
if len(imdb.Data) == 0 {
return SummaryStats{
LargestWitnessValue: RiemannDivisorSum{},
LargestComputedN: RiemannDivisorSum{},
}
}
largest_computed_n := RiemannDivisorSum{N: -1}
largest_witness_value := RiemannDivisorSum{WitnessValue: -1}
for _, rds := range imdb.Data {
if rds.N > largest_computed_n.N {
largest_computed_n = rds
}
if int(rds.WitnessValue) > int(largest_witness_value.WitnessValue) {
largest_witness_value = rds
}
}
return SummaryStats{
LargestWitnessValue: largest_witness_value,
LargestComputedN: largest_computed_n,
}
}