Monorepo for Tangled
0

Configure Feed

Select the types of activity you want to include in your feed.

appview: don't remove repos on knot deletion

Signed-off-by: Seongmin Lee <git@boltless.me>

Seongmin Lee (Jul 15, 2026, 5:58 PM +0900) 3215fd26 3c4b56a6

+12 -80
-5
appview/db/repos.go
··· 575 575 return err 576 576 } 577 577 578 - func RemoveReposByKnot(e Execer, knot string) error { 579 - _, err := e.Exec(`delete from repos where knot = ?`, knot) 580 - return err 581 - } 582 - 583 578 func GetRepoSource(e Execer, repoDid string) (string, error) { 584 579 var nullableSource sql.NullString 585 580 err := e.QueryRow(`select source from repos where repo_did = ?`, repoDid).Scan(&nullableSource)
-65
appview/db/repos_test.go
··· 5 5 "path/filepath" 6 6 "testing" 7 7 8 - "github.com/bluesky-social/indigo/atproto/syntax" 9 8 "tangled.org/core/appview/models" 10 9 ) 11 - 12 - func TestRemoveReposByKnotCascadesEntities(t *testing.T) { 13 - d := newTestDB(t) 14 - 15 - knot := "kelp.example" 16 - repo := seedRepo(t, d, "did:plc:akshay", knot, "anemone", "anemone", "did:plc:anemone") 17 - 18 - starNotif := &models.Notification{ 19 - RecipientDid: "did:plc:akshay", 20 - ActorDid: "did:plc:boltless", 21 - Type: models.NotificationTypeRepoStarred, 22 - EntityType: "repo", 23 - EntityId: repo.RepoAt().String(), 24 - RepoId: &repo.Id, 25 - } 26 - if err := CreateNotification(d, starNotif); err != nil { 27 - t.Fatalf("CreateNotification repo: %v", err) 28 - } 29 - 30 - tx, err := d.Begin() 31 - if err != nil { 32 - t.Fatalf("Begin: %v", err) 33 - } 34 - issue := &models.Issue{ 35 - Did: "did:plc:akshay", 36 - Rkey: "issue1", 37 - RepoDid: syntax.DID(repo.RepoDid), 38 - Title: "title", 39 - Body: "body", 40 - Open: true, 41 - } 42 - if err := PutIssue(tx, issue); err != nil { 43 - t.Fatalf("PutIssue: %v", err) 44 - } 45 - if err := tx.Commit(); err != nil { 46 - t.Fatalf("Commit: %v", err) 47 - } 48 - 49 - issueNotif := &models.Notification{ 50 - RecipientDid: "did:plc:akshay", 51 - ActorDid: "did:plc:boltless", 52 - Type: models.NotificationTypeIssueCommented, 53 - EntityType: "issue", 54 - EntityId: issue.AtUri().String(), 55 - IssueId: &issue.Id, 56 - } 57 - if err := CreateNotification(d, issueNotif); err != nil { 58 - t.Fatalf("CreateNotification issue: %v", err) 59 - } 60 - 61 - if err := RemoveReposByKnot(d, knot); err != nil { 62 - t.Fatalf("RemoveReposByKnot: %v", err) 63 - } 64 - 65 - if got := countRows(t, d, "select count(*) from repos where knot = ?", knot); got != 0 { 66 - t.Errorf("repos remaining: got %d, want 0", got) 67 - } 68 - if got := countRows(t, d, "select count(*) from issues where repo_did = ?", repo.RepoDid); got != 0 { 69 - t.Errorf("issues remaining: got %d, want 0", got) 70 - } 71 - if got := countRows(t, d, "select count(*) from notifications"); got != 0 { 72 - t.Errorf("notifications remaining: got %d, want 0", got) 73 - } 74 - } 75 10 76 11 func TestMakeReopenPreservesOrphanData(t *testing.T) { 77 12 path := filepath.Join(t.TempDir(), "reopen.db")
+5 -4
appview/ingester.go
··· 1223 1223 return fmt.Errorf("failed to delete knot: %w", err) 1224 1224 } 1225 1225 1226 - err = db.RemoveReposByKnot(tx, domain) 1227 - if err != nil { 1228 - return fmt.Errorf("failed to remove repos by knot: %w", err) 1229 - } 1226 + l.Error("attempt to delete repos by knot", "knot", domain) 1227 + // err = db.RemoveReposByKnot(tx, domain) 1228 + // if err != nil { 1229 + // return fmt.Errorf("failed to remove repos by knot: %w", err) 1230 + // } 1230 1231 1231 1232 if registration.Registered != nil { 1232 1233 err = i.Enforcer.RemoveKnot(domain)
+7 -6
appview/knots/knots.go
··· 286 286 return 287 287 } 288 288 289 - err = db.RemoveReposByKnot(tx, domain) 290 - if err != nil { 291 - l.Error("failed to delete repos", "err", err) 292 - fail() 293 - return 294 - } 289 + l.Error("attempt to delete repos by knot", "knot", domain) 290 + // err = db.RemoveReposByKnot(tx, domain) 291 + // if err != nil { 292 + // l.Error("failed to delete repos", "err", err) 293 + // fail() 294 + // return 295 + // } 295 296 296 297 // delete from enforcer if it was registered 297 298 if registration.Registered != nil {