]> git.lizzy.rs Git - go-anidb.git/blobdiff - groupcache.go
misc: Always simplify EpisodeLists
[go-anidb.git] / groupcache.go
index deed5387679396895b18d2585d4990353f3e139c..8d0f92cfd5f7c41f39d48fa30297e0b25bde6ef9 100644 (file)
@@ -61,6 +61,12 @@ func (adb *AniDB) GroupByID(gid GID) <-chan *Group {
        keys := []cacheKey{"gid", gid}
        ch := make(chan *Group, 1)
 
+       if gid < 1 {
+               ch <- nil
+               close(ch)
+               return ch
+       }
+
        ic := make(chan Cacheable, 1)
        go func() { ch <- (<-ic).(*Group); close(ch) }()
        if intentMap.Intent(ic, keys...) {
@@ -68,13 +74,13 @@ func (adb *AniDB) GroupByID(gid GID) <-chan *Group {
        }
 
        if !cache.CheckValid(keys...) {
-               intentMap.Notify((*Group)(nil), keys...)
+               intentMap.NotifyClose((*Group)(nil), keys...)
                return ch
        }
 
        g := gid.Group()
        if !g.IsStale() {
-               intentMap.Notify(g, keys...)
+               intentMap.NotifyClose(g, keys...)
                return ch
        }
 
@@ -93,7 +99,7 @@ func (adb *AniDB) GroupByID(gid GID) <-chan *Group {
                        cache.Delete(keys...) // deleted group?
                }
 
-               intentMap.Notify(g, keys...)
+               intentMap.NotifyClose(g, keys...)
        }()
        return ch
 }
@@ -105,6 +111,12 @@ func (adb *AniDB) GroupByName(gname string) <-chan *Group {
        altKeys := []cacheKey{"gid", "by-shortname", gname}
        ch := make(chan *Group, 1)
 
+       if gname == "" {
+               ch <- nil
+               close(ch)
+               return ch
+       }
+
        ic := make(chan Cacheable, 1)
        go func() {
                gid := (<-ic).(GID)
@@ -118,7 +130,7 @@ func (adb *AniDB) GroupByName(gname string) <-chan *Group {
        }
 
        if !cache.CheckValid(keys...) {
-               intentMap.Notify(GID(0), keys...)
+               intentMap.NotifyClose(GID(0), keys...)
                return ch
        }
 
@@ -126,14 +138,14 @@ func (adb *AniDB) GroupByName(gname string) <-chan *Group {
 
        var gc gidCache
        if cache.Get(&gc, keys...) == nil && !gc.IsStale() {
-               intentMap.Notify(gc.GID, keys...)
+               intentMap.NotifyClose(gc.GID, keys...)
                return ch
        }
        gid = gc.GID
 
        if gid == 0 {
                if cache.Get(&gc, altKeys...) == nil && !gc.IsStale() {
-                       intentMap.Notify(gc.GID, keys...)
+                       intentMap.NotifyClose(gc.GID, keys...)
                        return ch
                }
                gid = gc.GID
@@ -158,7 +170,7 @@ func (adb *AniDB) GroupByName(gname string) <-chan *Group {
                        cache.Delete(altKeys...)
                }
 
-               intentMap.Notify(gid, keys...)
+               intentMap.NotifyClose(gid, keys...)
        }()
        return ch
 }