diff --git a/sdk/hints/memoryh/db.go b/sdk/hints/memoryh/db.go index c840e5e..573626f 100644 --- a/sdk/hints/memoryh/db.go +++ b/sdk/hints/memoryh/db.go @@ -14,7 +14,7 @@ var _ hints.HintsDB = (*HintDB)(nil) type HintDB struct { RelayBySerial []string - OrderedRelaysByPubKey map[string]RelaysForPubKey + OrderedRelaysByPubKey map[string][]RelayEntry sync.Mutex } @@ -22,7 +22,7 @@ type HintDB struct { func NewHintDB() *HintDB { return &HintDB{ RelayBySerial: make([]string, 0, 100), - OrderedRelaysByPubKey: make(map[string]RelaysForPubKey, 100), + OrderedRelaysByPubKey: make(map[string][]RelayEntry, 100), } } @@ -41,9 +41,7 @@ func (db *HintDB) Save(pubkey string, relay string, key hints.HintKey, ts nostr. defer db.Unlock() // fmt.Println(" ", relay, "index", relayIndex, "--", "adding", hints.HintKey(key).String(), ts) - rfpk, _ := db.OrderedRelaysByPubKey[pubkey] - - entries := rfpk.Entries + entries, _ := db.OrderedRelaysByPubKey[pubkey] entryIndex := slices.IndexFunc(entries, func(re RelayEntry) bool { return re.Relay == relayIndex }) if entryIndex == -1 { @@ -66,9 +64,7 @@ func (db *HintDB) Save(pubkey string, relay string, key hints.HintKey, ts nostr. } } - rfpk.Entries = entries - - db.OrderedRelaysByPubKey[pubkey] = rfpk + db.OrderedRelaysByPubKey[pubkey] = entries } func (db *HintDB) TopN(pubkey string, n int) []string { @@ -76,13 +72,13 @@ func (db *HintDB) TopN(pubkey string, n int) []string { defer db.Unlock() urls := make([]string, 0, n) - if rfpk, ok := db.OrderedRelaysByPubKey[pubkey]; ok { + if entries, ok := db.OrderedRelaysByPubKey[pubkey]; ok { // sort everything from scratch - slices.SortFunc(rfpk.Entries, func(a, b RelayEntry) int { + slices.SortFunc(entries, func(a, b RelayEntry) int { return int(b.Sum() - a.Sum()) }) - for i, re := range rfpk.Entries { + for i, re := range entries { urls = append(urls, db.RelayBySerial[re.Relay]) if i+1 == n { break @@ -97,9 +93,9 @@ func (db *HintDB) PrintScores() { defer db.Unlock() fmt.Println("= print scores") - for pubkey, rfpk := range db.OrderedRelaysByPubKey { + for pubkey, entries := range db.OrderedRelaysByPubKey { fmt.Println("== relay scores for", pubkey) - for i, re := range rfpk.Entries { + for i, re := range entries { fmt.Printf(" %3d :: %30s (%3d) ::> %12d\n", i, db.RelayBySerial[re.Relay], re.Relay, re.Sum()) // for i, ts := range re.Timestamps { // fmt.Printf(" %-10d %s\n", ts, hints.HintKey(i).String()) @@ -113,13 +109,13 @@ func (db *HintDB) GetDetailedScores(pubkey string, n int) []hints.RelayScores { defer db.Unlock() result := make([]hints.RelayScores, 0, n) - if rfpk, ok := db.OrderedRelaysByPubKey[pubkey]; ok { + if entries, ok := db.OrderedRelaysByPubKey[pubkey]; ok { // sort everything from scratch - slices.SortFunc(rfpk.Entries, func(a, b RelayEntry) int { + slices.SortFunc(entries, func(a, b RelayEntry) int { return int(b.Sum() - a.Sum()) }) - for i, re := range rfpk.Entries { + for i, re := range entries { if i >= n { break } @@ -133,10 +129,6 @@ func (db *HintDB) GetDetailedScores(pubkey string, n int) []hints.RelayScores { return result } -type RelaysForPubKey struct { - Entries []RelayEntry -} - type RelayEntry struct { Relay int Timestamps [4]nostr.Timestamp