Author: Adam <git@apiote.tk>
fix caching items in experiences
db/db.go | 18 ++++++++++++++---- libamuse/account.go | 6 ++++++
diff --git a/db/db.go b/db/db.go index f12aedfe95a3ab640bef36e4151ac67d2decc7ae..9a3c8f6fbd0608f4bd1ab680aa7169a33192ac88 100644 --- a/db/db.go +++ b/db/db.go @@ -341,10 +341,20 @@ return err } defer db.Close() - _, err = db.Exec(`delete from wantlist where username = ? and item_type = ? and item_id = ?`, username, itemType, itemId) + result, err := db.Exec(`delete from wantlist where username = ? and item_type = ? and item_id = ?`, username, itemType, itemId) if err != nil { - fmt.Fprintf(os.Stderr, "Insert err %v\n", err) + fmt.Fprintf(os.Stderr, "Delete err %v\n", err) return err + } + rows, err := result.RowsAffected() + if err != nil { + fmt.Fprintf(os.Stderr, "Delete err %v\n", err) + return err + } + if rows == 0 { + return EmptyError{ + message: "Empty delete", + } } return nil } @@ -406,7 +416,7 @@ return err } defer db.Close() - _, err = db.Exec(`update item_cache set ref_count = ref_count - 1`) + _, err = db.Exec(`update item_cache set ref_count = ref_count - 1 where item_id = ?`, itemId) return err } @@ -567,7 +577,7 @@ return datastructure.Watchlist{}, err } if prevPart != nil { - entry.HasPrevious = true + entry.HasPrevious = true // todo is not on watched } watchlist.List = append(watchlist.List, entry) } diff --git a/libamuse/account.go b/libamuse/account.go index d52205d5f926fe38638d5f687b6212e972345860..847c4301a30bd84d44e2597874b2bbb0ed4e8274 100644 --- a/libamuse/account.go +++ b/libamuse/account.go @@ -173,9 +173,15 @@ Bind(verifyToken). Bind(verifyUser). Bind(parseExperienceDate). Bind(addToExperiences). + Bind(getItem). + Bind(cacheItem). Bind(removeFromWantList). Bind(removeCacheItem). Finish() + + if emptyErr, ok := err.(db.EmptyError); ok && emptyErr.Error() == "Empty delete" { + err = nil + } return err }