From 919339cdb1516da825254de8c8b650c37b2c54c3 Mon Sep 17 00:00:00 2001 From: sagit Date: Tue, 10 Feb 2026 11:56:40 +0000 Subject: [PATCH] fix(federation): cascade delete peer_share_runtime rows on share deletion Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- go-backend/internal/store/sqlite/repository.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/go-backend/internal/store/sqlite/repository.go b/go-backend/internal/store/sqlite/repository.go index 440c4ba..7f6bc00 100644 --- a/go-backend/internal/store/sqlite/repository.go +++ b/go-backend/internal/store/sqlite/repository.go @@ -1335,8 +1335,16 @@ func (r *Repository) DeletePeerShare(id int64) error { if r == nil || r.db == nil { return errors.New("repository not initialized") } - _, err := r.db.Exec(`DELETE FROM peer_share WHERE id=?`, id) - return err + tx, err := r.db.Begin() + if err != nil { + return err + } + defer func() { _ = tx.Rollback() }() + _, _ = tx.Exec(`DELETE FROM peer_share_runtime WHERE share_id = ?`, id) + if _, err := tx.Exec(`DELETE FROM peer_share WHERE id=?`, id); err != nil { + return err + } + return tx.Commit() } func (r *Repository) GetPeerShare(id int64) (*PeerShare, error) {