]> git.lizzy.rs Git - go-anidb.git/commitdiff
anidb: Add a few more linking methods
authorDiogo Franco (Kovensky) <diogomfranco@gmail.com>
Fri, 26 Jul 2013 15:21:04 +0000 (12:21 -0300)
committerDiogo Franco (Kovensky) <diogomfranco@gmail.com>
Fri, 26 Jul 2013 15:21:04 +0000 (12:21 -0300)
file.go
mylistanimecache.go
mylistcache.go

diff --git a/file.go b/file.go
index 6606f23a73ea347cc4f86f6060bc1fe488a8db71..73063117553cbab0850ca4c657c53285d8663dad 100644 (file)
--- a/file.go
+++ b/file.go
@@ -87,8 +87,11 @@ func (f *File) Group() *Group {
        return f.GID.Group()
 }
 
-func (f *File) MyList() {
-       _ = f.LID[0]
+func (f *File) UserMyList(user *User) *MyListEntry {
+       if f != nil && user != nil && f.LID[user.UID] > 0 {
+               return f.LID[user.UID].MyListEntry()
+       }
+       return nil
 }
 
 type RelatedEpisodes map[EID]float32
index 3fa165b87bd491bcfef70a387ad5faf44c32048d..db75026be09264427bab1eeb4a693b02b39f9b8f 100644 (file)
@@ -30,6 +30,36 @@ func (uid UID) MyListAnime(aid AID) *MyListAnime {
        return nil
 }
 
+func (u *User) MyListAnime(aid AID) *MyListAnime {
+       if u != nil {
+               return u.UID.MyListAnime(aid)
+       }
+       return nil
+}
+
+func (a *Anime) MyList(adb *AniDB) <-chan *MyListAnime {
+       ch := make(chan *MyListAnime, 1)
+
+       if a == nil {
+               ch <- nil
+               close(ch)
+               return ch
+       }
+
+       go func() {
+               user := <-adb.GetCurrentUser()
+               if user == nil || user.UID < 1 {
+                       ch <- nil
+                       close(ch)
+                       return
+               }
+
+               ch <- <-adb.MyListAnime(a.AID)
+               close(ch)
+       }()
+       return ch
+}
+
 func (adb *AniDB) MyListAnime(aid AID) <-chan *MyListAnime {
        ch := make(chan *MyListAnime, 1)
 
index 0aa837ae8aba96b6f8720834267d477452946fae..54d71c9c8e98cc24d47643c9981c27cc0c36a954 100644 (file)
@@ -26,6 +26,16 @@ func (e *MyListEntry) IsStale() bool {
 
 var _ cacheable = &MyListEntry{}
 
+func (uid UID) MyList(fid FID) *MyListEntry {
+       if f := fid.File(); f == nil {
+               return nil
+       } else if lid := f.LID[uid]; lid < 1 {
+               return nil
+       } else {
+               return f.LID[uid].MyListEntry()
+       }
+}
+
 func (lid LID) MyListEntry() *MyListEntry {
        var e MyListEntry
        if CacheGet(&e, "lid", lid) == nil {