back interdiff of round #3 and #2

appview: ingest issue/comment update and delete #526

merged
opened by anirudh.fi targeting master from push-wnotmtoqlnvl

Also adds the relevant DB helpers for this.

Signed-off-by: Anirudh Oppiliappan anirudh@tangled.sh

files
api
tangled
appview
REVERTED
appview/db/issues.go
···
return err
}
-
func UpdateCommentByRkey(e Execer, ownerDid, rkey, newBody string) error {
-
_, err := e.Exec(
-
`
-
update comments
-
set body = ?,
-
edited = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
-
where owner_did = ? and rkey = ?
-
`, newBody, ownerDid, rkey)
-
return err
-
}
-
func DeleteCommentByRkey(e Execer, ownerDid, rkey string) error {
_, err := e.Exec(
`
···
return err
}
-
func UpdateIssueByRkey(e Execer, ownerDid, rkey, title, body string) error {
-
_, err := e.Exec(`update issues set title = ?, body = ? where owner_did = ? and rkey = ?`, title, body, ownerDid, rkey)
-
return err
-
}
-
-
func DeleteIssueByRkey(e Execer, ownerDid, rkey string) error {
-
_, err := e.Exec(`delete from issues where owner_did = ? and rkey = ?`, ownerDid, rkey)
-
return err
-
}
-
func CloseIssue(e Execer, repoAt syntax.ATURI, issueId int) error {
_, err := e.Exec(`update issues set open = 0 where repo_at = ? and issue_id = ?`, repoAt, issueId)
return err
REVERTED
appview/ingester.go
···
return nil
case models.CommitOperationUpdate:
+
// TODO: implement updates
-
raw := json.RawMessage(e.Commit.Record)
-
record := tangled.RepoIssue{}
-
err = json.Unmarshal(raw, &record)
-
if err != nil {
-
l.Error("invalid record", "err", err)
-
return err
-
}
-
-
body := ""
-
if record.Body != nil {
-
body = *record.Body
-
}
-
-
sanitizer := markup.NewSanitizer()
-
if st := strings.TrimSpace(sanitizer.SanitizeDescription(record.Title)); st == "" {
-
return fmt.Errorf("title is empty after HTML sanitization")
-
}
-
if sb := strings.TrimSpace(sanitizer.SanitizeDefault(body)); sb == "" {
-
return fmt.Errorf("body is empty after HTML sanitization")
-
}
-
-
err = db.UpdateIssueByRkey(ddb, did, rkey, record.Title, body)
-
if err != nil {
-
l.Error("failed to update issue", "err", err)
-
return err
-
}
-
return nil
case models.CommitOperationDelete:
+
// TODO: implement issue deletion
-
if err := db.DeleteIssueByRkey(ddb, did, rkey); err != nil {
-
l.Error("failed to delete", "err", err)
-
return fmt.Errorf("failed to delete issue record: %w", err)
-
}
-
return nil
}
···
return nil
case models.CommitOperationUpdate:
+
// TODO: implement comment updates
-
raw := json.RawMessage(e.Commit.Record)
-
record := tangled.RepoIssueComment{}
-
err = json.Unmarshal(raw, &record)
-
if err != nil {
-
l.Error("invalid record", "err", err)
-
return err
-
}
-
-
sanitizer := markup.NewSanitizer()
-
if sb := strings.TrimSpace(sanitizer.SanitizeDefault(record.Body)); sb == "" {
-
return fmt.Errorf("body is empty after HTML sanitization")
-
}
-
-
err = db.UpdateCommentByRkey(ddb, did, rkey, record.Body)
-
if err != nil {
-
l.Error("failed to update issue comment", "err", err)
-
return err
-
}
-
return nil
case models.CommitOperationDelete:
NEW
api/tangled/cbor_gen.go
···
return err
-
// t.Owner (string) (string)
-
if len("owner") > 1000000 {
-
return xerrors.Errorf("Value in field \"owner\" was too long")
-
}
-
-
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("owner"))); err != nil {
-
return err
-
}
-
if _, err := cw.WriteString(string("owner")); err != nil {
-
return err
-
}
-
-
if len(t.Owner) > 1000000 {
-
return xerrors.Errorf("Value in field t.Owner was too long")
-
}
-
-
if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Owner))); err != nil {
-
return err
-
}
-
if _, err := cw.WriteString(string(t.Owner)); err != nil {
-
return err
-
}
-
// t.Title (string) (string)
if len("title") > 1000000 {
return xerrors.Errorf("Value in field \"title\" was too long")
···
t.LexiconTypeID = string(sval)
-
// t.Owner (string) (string)
-
case "owner":
-
-
{
-
sval, err := cbg.ReadStringWithMax(cr, 1000000)
-
if err != nil {
-
return err
-
}
-
-
t.Owner = string(sval)
-
}
// t.Title (string) (string)
case "title":