tangled
alpha
login
or
join now
back
round
2
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
···
824
824
return nil
825
825
826
826
case models.CommitOperationUpdate:
827
827
-
// TODO: implement updates
827
827
+
raw := json.RawMessage(e.Commit.Record)
828
828
+
record := tangled.RepoIssue{}
829
829
+
err = json.Unmarshal(raw, &record)
830
830
+
if err != nil {
831
831
+
l.Error("invalid record", "err", err)
832
832
+
return err
833
833
+
}
834
834
+
835
835
+
body := ""
836
836
+
if record.Body != nil {
837
837
+
body = *record.Body
838
838
+
}
839
839
+
840
840
+
sanitizer := markup.NewSanitizer()
841
841
+
if st := strings.TrimSpace(sanitizer.SanitizeDescription(record.Title)); st == "" {
842
842
+
return fmt.Errorf("title is empty after HTML sanitization")
843
843
+
}
844
844
+
if sb := strings.TrimSpace(sanitizer.SanitizeDefault(body)); sb == "" {
845
845
+
return fmt.Errorf("body is empty after HTML sanitization")
846
846
+
}
847
847
+
848
848
+
err = db.UpdateIssueByRkey(ddb, did, rkey, record.Title, body)
849
849
+
if err != nil {
850
850
+
l.Error("failed to update issue", "err", err)
851
851
+
return err
852
852
+
}
853
853
+
828
854
return nil
829
855
830
856
case models.CommitOperationDelete:
831
831
-
// TODO: implement issue deletion
857
857
+
if err := db.DeleteIssueByRkey(ddb, did, rkey); err != nil {
858
858
+
l.Error("failed to delete", "err", err)
859
859
+
return fmt.Errorf("failed to delete issue record: %w", err)
860
860
+
}
861
861
+
832
862
return nil
833
863
}
834
864
···
879
909
return nil
880
910
881
911
case models.CommitOperationUpdate:
882
882
-
// TODO: implement comment updates
912
912
+
raw := json.RawMessage(e.Commit.Record)
913
913
+
record := tangled.RepoIssueComment{}
914
914
+
err = json.Unmarshal(raw, &record)
915
915
+
if err != nil {
916
916
+
l.Error("invalid record", "err", err)
917
917
+
return err
918
918
+
}
919
919
+
920
920
+
sanitizer := markup.NewSanitizer()
921
921
+
if sb := strings.TrimSpace(sanitizer.SanitizeDefault(record.Body)); sb == "" {
922
922
+
return fmt.Errorf("body is empty after HTML sanitization")
923
923
+
}
924
924
+
925
925
+
err = db.UpdateCommentByRkey(ddb, did, rkey, record.Body)
926
926
+
if err != nil {
927
927
+
l.Error("failed to update issue comment", "err", err)
928
928
+
return err
929
929
+
}
930
930
+
883
931
return nil
884
932
885
933
case models.CommitOperationDelete: