diff --git a/appview/db/follow.go b/appview/db/follow.go index 0437a110..7cceb645 100644 --- a/appview/db/follow.go +++ b/appview/db/follow.go @@ -47,6 +47,12 @@ func DeleteFollow(e Execer, userDid, subjectDid string) error { return err } +// Remove a follow +func DeleteFollowByRkey(e Execer, userDid, rkey string) error { + _, err := e.Exec(`delete from follows where user_did = ? and rkey = ?`, userDid, rkey) + return err +} + func GetFollowerFollowing(e Execer, did string) (int, int, error) { followers, following := 0, 0 err := e.QueryRow( diff --git a/appview/db/pubkeys.go b/appview/db/pubkeys.go index 3ef499b7..03146fbb 100644 --- a/appview/db/pubkeys.go +++ b/appview/db/pubkeys.go @@ -13,7 +13,7 @@ func AddPublicKey(e Execer, did, name, key, rkey string) error { return err } -func RemovePublicKey(e Execer, did, name, key string) error { +func DeletePublicKey(e Execer, did, name, key string) error { _, err := e.Exec(` delete from public_keys where did = ? and name = ? and key = ?`, @@ -21,6 +21,14 @@ func RemovePublicKey(e Execer, did, name, key string) error { return err } +func DeletePublicKeyByRkey(e Execer, did, rkey string) error { + _, err := e.Exec(` + delete or ignore from public_keys + where did = ? and name = ? and rkey = ?`, + did, rkey) + return err +} + type PublicKey struct { Did string `json:"did"` Key string `json:"key"` diff --git a/appview/db/star.go b/appview/db/star.go index 334a1bac..b836be98 100644 --- a/appview/db/star.go +++ b/appview/db/star.go @@ -69,6 +69,12 @@ func DeleteStar(e Execer, starredByDid string, repoAt syntax.ATURI) error { return err } +// Remove a star +func DeleteStarByRkey(e Execer, starredByDid string, rkey string) error { + _, err := e.Exec(`delete or ignore from stars where starred_by_did = ? and rkey = ?`, starredByDid, rkey) + return err +} + func GetStarCount(e Execer, repoAt syntax.ATURI) (int, error) { stars := 0 err := e.QueryRow( diff --git a/appview/settings/settings.go b/appview/settings/settings.go index 7ea8cb72..1fafa210 100644 --- a/appview/settings/settings.go +++ b/appview/settings/settings.go @@ -422,7 +422,7 @@ func (s *Settings) keys(w http.ResponseWriter, r *http.Request) { client, _ := s.Auth.AuthorizedClient(r) - if err := db.RemovePublicKey(s.Db, did, name, key); err != nil { + if err := db.DeletePublicKey(s.Db, did, name, key); err != nil { log.Printf("removing public key: %s", err) s.Pages.Notice(w, "settings-keys", "Failed to remove public key.") return diff --git a/appview/state/follow.go b/appview/state/follow.go index 0688675b..a0fa32d1 100644 --- a/appview/state/follow.go +++ b/appview/state/follow.go @@ -86,7 +86,7 @@ func (s *State) Follow(w http.ResponseWriter, r *http.Request) { return } - err = db.DeleteFollow(s.db, currentUser.Did, subjectIdent.DID.String()) + err = db.DeleteFollowByRkey(s.db, currentUser.Did, follow.Rkey) if err != nil { log.Println("failed to delete follow from DB") // this is not an issue, the firehose event might have already done this diff --git a/appview/state/star.go b/appview/state/star.go index a11217d6..324fb070 100644 --- a/appview/state/star.go +++ b/appview/state/star.go @@ -91,7 +91,7 @@ func (s *State) Star(w http.ResponseWriter, r *http.Request) { return } - err = db.DeleteStar(s.db, currentUser.Did, subjectUri) + err = db.DeleteStarByRkey(s.db, currentUser.Did, star.Rkey) if err != nil { log.Println("failed to delete star from DB") // this is not an issue, the firehose event might have already done this