forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

appview: add utilities to delete records by rkey

did+rkey can uniquely identify a row for any data record.

Changed files
+24 -4
appview
+6
appview/db/follow.go
···
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(
+9 -1
appview/db/pubkeys.go
···
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 = ?`,
did, name, key)
+
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
}
+6
appview/db/star.go
···
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(
+1 -1
appview/settings/settings.go
···
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
+1 -1
appview/state/follow.go
···
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
+1 -1
appview/state/star.go
···
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