From 376da28ed0dd2e75ff45559de7062dc33bc21ad2 Mon Sep 17 00:00:00 2001 From: William Date: Fri, 14 Jun 2024 15:27:07 +0200 Subject: [PATCH 1/2] add a file's title to properties --- org-sql.el | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/org-sql.el b/org-sql.el index c5503bd..630714b 100644 --- a/org-sql.el +++ b/org-sql.el @@ -1927,6 +1927,26 @@ OUTLINE-CONFIG is a list given by `org-sql--to-outline-config'." (-uniq) (-reduce-from #'add-tag acc))))) +(defun org-sql--insert-alist-add-title (acc outline-config) + "Add row for each file tag in file to ACC. +OUTLINE-CONFIG is a list given by `org-sql--to-outline-config'." + (-let (((&plist :outline-hash :top-section) outline-config)) + (cl-flet + ((add-property + (acc keyword) + (-let ((value (org-ml-get-property :value keyword)) + (key (org-ml-get-property :key keyword))) + (--> (org-sql--insert-alist-add acc properties + :outline_hash outline-hash + :property_id (org-sql--acc-get :property-id acc) + :key_text key + :val_text value) + (org-sql--acc-incr :property-id it))))) + (->> (org-ml-get-children top-section) + (--filter (org-ml-is-type 'keyword it)) + (--filter (equal (org-ml-get-property :key it) "TITLE")) + (-reduce-from #'add-property acc))))) + (defun org-sql--insert-alist-add-file-properties (acc outline-config) "Add row for each file property in file to ACC. OUTLINE-CONFIG is a list given by `org-sql--to-outline-config'." @@ -1989,6 +2009,7 @@ OUTLINE-CONFIG is a list given by `org-sql--to-outline-config'." (org-sql--insert-alist-add-outline-hash outline-config) (org-sql--insert-alist-add-file-metadata outline-config) (org-sql--insert-alist-add-file-properties outline-config) + (org-sql--insert-alist-add-title outline-config) (org-sql--insert-alist-add-file-tags outline-config) (org-sql--insert-alist-add-headlines outline-config))) From c3be56bceb5b742ab384b17219b57ba350a96fee Mon Sep 17 00:00:00 2001 From: William Date: Fri, 14 Jun 2024 17:36:39 +0200 Subject: [PATCH 2/2] add a file's top property-drawers' :ID --- org-sql.el | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/org-sql.el b/org-sql.el index 630714b..1dbc865 100644 --- a/org-sql.el +++ b/org-sql.el @@ -1947,6 +1947,24 @@ OUTLINE-CONFIG is a list given by `org-sql--to-outline-config'." (--filter (equal (org-ml-get-property :key it) "TITLE")) (-reduce-from #'add-property acc))))) +(defun org-sql--insert-alist-add-file-property-drawer-id (acc outline-config) + "Add row for each file property in file to ACC. +OUTLINE-CONFIG is a list given by `org-sql--to-outline-config'." + (-let (((&plist :outline-hash :top-section) outline-config)) + (cl-flet + ((add-property + (acc id-value) + (--> (org-sql--insert-alist-add acc properties + :outline_hash outline-hash + :property_id (org-sql--acc-get :property-id acc) + :key_text "ID" + :val_text id-value) + (org-sql--acc-incr :property-id it)))) + (->> top-section + (org-element-property :parent) + (org-element-property :ID) + (add-property acc))))) + (defun org-sql--insert-alist-add-file-properties (acc outline-config) "Add row for each file property in file to ACC. OUTLINE-CONFIG is a list given by `org-sql--to-outline-config'." @@ -2009,6 +2027,7 @@ OUTLINE-CONFIG is a list given by `org-sql--to-outline-config'." (org-sql--insert-alist-add-outline-hash outline-config) (org-sql--insert-alist-add-file-metadata outline-config) (org-sql--insert-alist-add-file-properties outline-config) + (org-sql--insert-alist-add-file-property-drawer-id outline-config) (org-sql--insert-alist-add-title outline-config) (org-sql--insert-alist-add-file-tags outline-config) (org-sql--insert-alist-add-headlines outline-config)))