Function: forge--update-discussion
forge--update-discussion is a byte-compiled function defined in
forge-github.el.
Signature
(forge--update-discussion ARG &rest ARGS)
Implementations
(forge--update-discussion (REPO forge-github-repository) DATA &optional BUMP INITIAL-PULL) in `forge-github.el'.
Undocumented
Source Code
;; Defined in ~/.emacs.d/elpa/forge-20260408.1922/forge-github.el
(cl-defmethod forge--update-discussion ((repo forge-github-repository) data
&optional bump initial-pull)
(let ((repo-id (oref repo id))
discussion-id discussion)
(let-alist data
(closql-with-transaction (forge-db)
(setq discussion-id (forge--object-id 'forge-discussion repo .number))
(setq discussion (or (forge-get-discussion repo .number)
(closql-insert
(forge-db)
(forge-discussion :id discussion-id
:repository repo-id
:number .number))))
(oset discussion their-id .id)
(oset discussion slug (format "#%s" .number))
(oset discussion author .author.login)
(oset discussion title .title)
(oset discussion created .createdAt)
(oset discussion closed .closedAt)
(oset discussion locked-p .locked)
(oset discussion category (forge--object-id repo-id .category.id))
(oset discussion body (forge--sanitize-string .body))
(oset discussion answer
(and .answer.id
(forge--object-id discussion-id .answer.id)))
(oset discussion state
(pcase-exhaustive .stateReason
("RESOLVED" 'completed) ;sic
("DUPLICATE" 'duplicate)
("OUTDATED" 'outdated)
("REOPENED" 'open)
('nil 'open)))
(dolist (p .comments)
(let-alist p
(let ((post-id (forge--object-id discussion-id .databaseId)))
(closql-insert
(forge-db)
(forge-discussion-post
:id post-id
:their-id .id
:number .databaseId
:discussion discussion-id
:author .author.login
:created .createdAt
:updated .updatedAt
:body (forge--sanitize-string .body))
t)
(dolist (reply-data .replies)
(let-alist reply-data
(closql-insert
(forge-db)
(forge-discussion-reply
:id (forge--object-id discussion-id .databaseId)
:their-id .id
:number .databaseId
:post post-id
:discussion discussion-id
:author .author.login
:created .createdAt
:updated .updatedAt
:body (forge--sanitize-string .body))
t))))))
(forge--update-status repo discussion data bump initial-pull))
(forge--set-connections repo discussion 'labels .labels)
discussion)))