tangled
alpha
login
or
join now
back
round
0
view raw
appview: ingest issue/comment update and delete
#526
merged
opened by
anirudh.fi
4 months ago
targeting
master
from
push-wnotmtoqlnvl
Also adds the relevant DB helpers for this.
Signed-off-by: Anirudh Oppiliappan
anirudh@tangled.sh
options
unified
split
Changed files
+72
-3
appview
db
issues.go
ingester.go
+21
appview/db/issues.go
···
545
return err
546
}
547
0
0
0
0
0
0
0
0
0
0
0
548
func DeleteCommentByRkey(e Execer, ownerDid, rkey string) error {
549
_, err := e.Exec(
550
`
···
556
return err
557
}
558
0
0
0
0
0
0
0
0
0
0
559
func CloseIssue(e Execer, repoAt syntax.ATURI, issueId int) error {
560
_, err := e.Exec(`update issues set open = 0 where repo_at = ? and issue_id = ?`, repoAt, issueId)
561
return err
···
545
return err
546
}
547
548
+
func UpdateCommentByRkey(e Execer, ownerDid, rkey, newBody string) error {
549
+
_, err := e.Exec(
550
+
`
551
+
update comments
552
+
set body = ?,
553
+
edited = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
554
+
where owner_did = ? and rkey = ?
555
+
`, newBody, ownerDid, rkey)
556
+
return err
557
+
}
558
+
559
func DeleteCommentByRkey(e Execer, ownerDid, rkey string) error {
560
_, err := e.Exec(
561
`
···
567
return err
568
}
569
570
+
func UpdateIssueByRkey(e Execer, ownerDid, rkey, title, body string) error {
571
+
_, err := e.Exec(`update issues set title = ?, body = ? where owner_did = ? and rkey = ?`, title, body, ownerDid, rkey)
572
+
return err
573
+
}
574
+
575
+
func DeleteIssueByRkey(e Execer, ownerDid, rkey string) error {
576
+
_, err := e.Exec(`delete from issues where owner_did = ? and rkey = ?`, ownerDid, rkey)
577
+
return err
578
+
}
579
+
580
func CloseIssue(e Execer, repoAt syntax.ATURI, issueId int) error {
581
_, err := e.Exec(`update issues set open = 0 where repo_at = ? and issue_id = ?`, repoAt, issueId)
582
return err
+51
-3
appview/ingester.go
···
665
return nil
666
667
case models.CommitOperationUpdate:
668
-
// TODO: implement updates
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
669
return nil
670
671
case models.CommitOperationDelete:
672
-
// TODO: implement issue deletion
0
0
0
0
673
return nil
674
}
675
···
720
return nil
721
722
case models.CommitOperationUpdate:
723
-
// TODO: implement comment updates
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
724
return nil
725
726
case models.CommitOperationDelete:
···
665
return nil
666
667
case models.CommitOperationUpdate:
668
+
raw := json.RawMessage(e.Commit.Record)
669
+
record := tangled.RepoIssue{}
670
+
err = json.Unmarshal(raw, &record)
671
+
if err != nil {
672
+
l.Error("invalid record", "err", err)
673
+
return err
674
+
}
675
+
676
+
body := ""
677
+
if record.Body != nil {
678
+
body = *record.Body
679
+
}
680
+
681
+
sanitizer := markup.NewSanitizer()
682
+
if st := strings.TrimSpace(sanitizer.SanitizeDescription(record.Title)); st == "" {
683
+
return fmt.Errorf("title is empty after HTML sanitization")
684
+
}
685
+
if sb := strings.TrimSpace(sanitizer.SanitizeDefault(body)); sb == "" {
686
+
return fmt.Errorf("body is empty after HTML sanitization")
687
+
}
688
+
689
+
err = db.UpdateIssueByRkey(ddb, did, rkey, record.Title, body)
690
+
if err != nil {
691
+
l.Error("failed to update issue", "err", err)
692
+
return err
693
+
}
694
+
695
return nil
696
697
case models.CommitOperationDelete:
698
+
if err := db.DeleteIssueByRkey(ddb, did, rkey); err != nil {
699
+
l.Error("failed to delete", "err", err)
700
+
return fmt.Errorf("failed to delete issue record: %w", err)
701
+
}
702
+
703
return nil
704
}
705
···
750
return nil
751
752
case models.CommitOperationUpdate:
753
+
raw := json.RawMessage(e.Commit.Record)
754
+
record := tangled.RepoIssueComment{}
755
+
err = json.Unmarshal(raw, &record)
756
+
if err != nil {
757
+
l.Error("invalid record", "err", err)
758
+
return err
759
+
}
760
+
761
+
sanitizer := markup.NewSanitizer()
762
+
if sb := strings.TrimSpace(sanitizer.SanitizeDefault(record.Body)); sb == "" {
763
+
return fmt.Errorf("body is empty after HTML sanitization")
764
+
}
765
+
766
+
err = db.UpdateCommentByRkey(ddb, did, rkey, record.Body)
767
+
if err != nil {
768
+
l.Error("failed to update issue comment", "err", err)
769
+
return err
770
+
}
771
+
772
return nil
773
774
case models.CommitOperationDelete: