tangled
alpha
login
or
join now
back
round
1
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
···
626
626
return err
627
627
}
628
628
629
629
+
func UpdateCommentByRkey(e Execer, ownerDid, rkey, newBody string) error {
630
630
+
_, err := e.Exec(
631
631
+
`
632
632
+
update comments
633
633
+
set body = ?,
634
634
+
edited = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
635
635
+
where owner_did = ? and rkey = ?
636
636
+
`, newBody, ownerDid, rkey)
637
637
+
return err
638
638
+
}
639
639
+
629
640
func DeleteCommentByRkey(e Execer, ownerDid, rkey string) error {
630
641
_, err := e.Exec(
631
642
`
···
637
648
return err
638
649
}
639
650
651
651
+
func UpdateIssueByRkey(e Execer, ownerDid, rkey, title, body string) error {
652
652
+
_, err := e.Exec(`update issues set title = ?, body = ? where owner_did = ? and rkey = ?`, title, body, ownerDid, rkey)
653
653
+
return err
654
654
+
}
655
655
+
656
656
+
func DeleteIssueByRkey(e Execer, ownerDid, rkey string) error {
657
657
+
_, err := e.Exec(`delete from issues where owner_did = ? and rkey = ?`, ownerDid, rkey)
658
658
+
return err
659
659
+
}
660
660
+
640
661
func CloseIssue(e Execer, repoAt syntax.ATURI, issueId int) error {
641
662
_, err := e.Exec(`update issues set open = 0 where repo_at = ? and issue_id = ?`, repoAt, issueId)
642
663
return err
+51
-3
appview/ingester.go
···
665
665
return nil
666
666
667
667
case models.CommitOperationUpdate:
668
668
-
// TODO: implement updates
668
668
+
raw := json.RawMessage(e.Commit.Record)
669
669
+
record := tangled.RepoIssue{}
670
670
+
err = json.Unmarshal(raw, &record)
671
671
+
if err != nil {
672
672
+
l.Error("invalid record", "err", err)
673
673
+
return err
674
674
+
}
675
675
+
676
676
+
body := ""
677
677
+
if record.Body != nil {
678
678
+
body = *record.Body
679
679
+
}
680
680
+
681
681
+
sanitizer := markup.NewSanitizer()
682
682
+
if st := strings.TrimSpace(sanitizer.SanitizeDescription(record.Title)); st == "" {
683
683
+
return fmt.Errorf("title is empty after HTML sanitization")
684
684
+
}
685
685
+
if sb := strings.TrimSpace(sanitizer.SanitizeDefault(body)); sb == "" {
686
686
+
return fmt.Errorf("body is empty after HTML sanitization")
687
687
+
}
688
688
+
689
689
+
err = db.UpdateIssueByRkey(ddb, did, rkey, record.Title, body)
690
690
+
if err != nil {
691
691
+
l.Error("failed to update issue", "err", err)
692
692
+
return err
693
693
+
}
694
694
+
669
695
return nil
670
696
671
697
case models.CommitOperationDelete:
672
672
-
// TODO: implement issue deletion
698
698
+
if err := db.DeleteIssueByRkey(ddb, did, rkey); err != nil {
699
699
+
l.Error("failed to delete", "err", err)
700
700
+
return fmt.Errorf("failed to delete issue record: %w", err)
701
701
+
}
702
702
+
673
703
return nil
674
704
}
675
705
···
720
750
return nil
721
751
722
752
case models.CommitOperationUpdate:
723
723
-
// TODO: implement comment updates
753
753
+
raw := json.RawMessage(e.Commit.Record)
754
754
+
record := tangled.RepoIssueComment{}
755
755
+
err = json.Unmarshal(raw, &record)
756
756
+
if err != nil {
757
757
+
l.Error("invalid record", "err", err)
758
758
+
return err
759
759
+
}
760
760
+
761
761
+
sanitizer := markup.NewSanitizer()
762
762
+
if sb := strings.TrimSpace(sanitizer.SanitizeDefault(record.Body)); sb == "" {
763
763
+
return fmt.Errorf("body is empty after HTML sanitization")
764
764
+
}
765
765
+
766
766
+
err = db.UpdateCommentByRkey(ddb, did, rkey, record.Body)
767
767
+
if err != nil {
768
768
+
l.Error("failed to update issue comment", "err", err)
769
769
+
return err
770
770
+
}
771
771
+
724
772
return nil
725
773
726
774
case models.CommitOperationDelete: