mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-05-05 16:20:14 +02:00
sdk/hints: simplify memory.
This commit is contained in:
parent
2e28cc809a
commit
a88b34ed3c
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user