amuse.git

commit d034e8e4e17780c5a5b4d3fd40a7281610fb977d

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
 }