Function: org-roam-db-insert-link

org-roam-db-insert-link is a byte-compiled function defined in org-roam-db.el.

Signature

(org-roam-db-insert-link LINK)

Documentation

Insert link data for LINK at current point into the Org-roam cache.

Source Code

;; Defined in ~/.emacs.d/elpa/org-roam-20260224.1637/org-roam-db.el
(defun org-roam-db-insert-link (link)
  "Insert link data for LINK at current point into the Org-roam cache."
  (save-excursion
    (goto-char (org-element-property :begin link))
    (let* ((type (org-element-property :type link))
           (path (org-element-property :path link))
           (option (and (string-match "::\\(.*\\)\\'" path)
                        (match-string 1 path)))
           (path (if (not option) path
                   (substring path 0 (match-beginning 0))))
           (source (org-roam-id-at-point))
           (properties (list :outline (ignore-errors
                                        ;; This can error if link is not under any headline
                                        (org-get-outline-path 'with-self 'use-cache))))
           (properties (if option (plist-put properties :search-option option)
                         properties)))
      ;; For Org-ref links, we need to split the path into the cite keys
      (when (and source path)
        (if (and (boundp 'org-ref-cite-types)
                 (or (assoc type org-ref-cite-types)
                     (member type org-ref-cite-types)))
            (org-roam-db-query
             [:insert :into citations
              :values $v1]
             (mapcar (lambda (k) (vector source k (point) properties))
                     (org-roam-org-ref-path-to-keys path)))
          (org-roam-db-query
           [:insert :into links
            :values $v1]
           (vector (point) source path type properties)))))))