diff options
author | Ben Morrison <ben@gbmor.dev> | 2019-05-14 03:08:07 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2019-05-14 03:08:07 -0400 |
commit | 2492014051e5cd4c37287a09639d18f85e1349dc (patch) | |
tree | fa3af5377e10f6f6748390d1969b5879bc21593a /registry/index.go | |
parent | a8ba50b53f45e06af03f5ef98e759539394a3c0c (diff) | |
download | getwtxt-2492014051e5cd4c37287a09639d18f85e1349dc.tar.gz |
moved query functions to own file, made SortByTime query-agnostic
Diffstat (limited to 'registry/index.go')
-rw-r--r-- | registry/index.go | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/registry/index.go b/registry/index.go index 85277fc..4d82ebb 100644 --- a/registry/index.go +++ b/registry/index.go @@ -2,8 +2,6 @@ package registry import ( "log" - "sort" - "strings" "time" ) @@ -30,88 +28,3 @@ func (index UserIndex) DelUser(url string) { delete(index, url) 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 - imutex.RLock() - for k, v := range index { - if strings.Contains(v.nick, name) { - timekey[v.date] = v.nick + "\t" + k + "\t" + string(v.apidate) - sortedkeys = append(sortedkeys, v.date) - } - } - imutex.RUnlock() - sort.Sort(sortedkeys) - for _, e := range sortedkeys { - users = append(users, timekey[e]) - } - - return users -} - -// QueryTag returns all the known statuses that -// contain the provided tag. -func (index UserIndex) QueryTag(tag string) []string { - var statusmap StatusMapSlice - i := 0 - imutex.RLock() - for _, v := range index { - statusmap[i] = v.FindTag(tag) - i++ - } - imutex.RUnlock() - - return statusmap.SortByTime() -} - -// FindTag takes a user's tweets and looks for a given tag. -// Returns the tweets with the tag as a []string. -func (userdata *Data) FindTag(tag string) StatusMap { - var statuses StatusMap - for k, e := range userdata.status { - parts := strings.Split(e, "\t") - statusslice := strings.Split(parts[3], " ") - for _, v := range statusslice { - if v[1:] == tag { - statuses[k] = e - break - } - } - } - - return statuses -} - -// SortByTime returns a string slice of the statuses sorted by time -func (sm StatusMapSlice) SortByTime() []string { - var tagmap StatusMap - var times TimeSlice - var statuses []string - for _, e := range sm { - for k, v := range e { - tagmap[k] = v - } - } - for k := range tagmap { - times = append(times, k) - } - sort.Sort(times) - for _, e := range times { - statuses = append(statuses, tagmap[e]) - } - - return statuses -} - -// GetStatuses returns the string slice containing a user's statuses -func (index UserIndex) GetStatuses(url string) StatusMap { - imutex.RLock() - status := index[url].status - imutex.RUnlock() - return status -} |