diff options
author | Ben Morrison <ben@gbmor.dev> | 2019-05-14 01:40:47 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2019-05-14 01:40:47 -0400 |
commit | 76ab864fd8372d947d3de97315e4f9996a39ff49 (patch) | |
tree | bc43746bd33100e660dbb2214f40ce366397a9de /cache/index.go | |
parent | fae46db2e7716a273a02a5bf52f8a0b78bcb23c8 (diff) | |
download | getwtxt-76ab864fd8372d947d3de97315e4f9996a39ff49.tar.gz |
tentatively finished QueryUser function
Diffstat (limited to 'cache/index.go')
-rw-r--r-- | cache/index.go | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/cache/index.go b/cache/index.go index 0cf8065..ee00479 100644 --- a/cache/index.go +++ b/cache/index.go @@ -2,6 +2,7 @@ package cache import ( "log" + "sort" "strings" "time" ) @@ -11,7 +12,8 @@ func NewUserIndex() *UserIndex { return &UserIndex{} } -// AddUser inserts a new user into the index. The *Data struct only contains the nickname.) +// AddUser inserts a new user into the index. The *Data struct +// contains the nickname and the time the user was added. func (index UserIndex) AddUser(nick string, url string) { rfc3339date, err := time.Now().MarshalText() if err != nil { @@ -29,15 +31,23 @@ func (index UserIndex) DelUser(url string) { imutex.Unlock() } +// QueryUser checks the user index for nicknames that contain the +// nickname provided as an argument. Entries are returned sorted +// by the date they were added to the index. func (index UserIndex) QueryUser(name string) []string { + var timekey = map[time.Time]string{} + var sortedkeys TimeSlice var users []string - var entry string for k, v := range index { if strings.Contains(v.nick, name) { - entry = v.nick + "\t" + k + "\t" + string(v.apidate) - users = append(users, entry) + timekey[v.date] = v.nick + "\t" + k + "\t" + string(v.apidate) + sortedkeys = append(sortedkeys, v.date) } } + sort.Sort(sortedkeys) + for _, e := range sortedkeys { + users = append(users, timekey[e]) + } return users } |