mirror of
https://github.com/logseq/logseq.git
synced 2026-05-03 10:26:35 +00:00
enhance: add /Advanced Query for db graphs
Related to https://linear.app/logseq/issue/LOG-3246/improve-advanced-query-editor. Had to upgrade promesa to get p/doseq
This commit is contained in:
@@ -201,6 +201,7 @@
|
|||||||
:lint-as {promesa.core/let clojure.core/let
|
:lint-as {promesa.core/let clojure.core/let
|
||||||
promesa.core/loop clojure.core/loop
|
promesa.core/loop clojure.core/loop
|
||||||
promesa.core/recur clojure.core/recur
|
promesa.core/recur clojure.core/recur
|
||||||
|
promesa.core/doseq clojure.core/doseq
|
||||||
rum.core/defcc rum.core/defc
|
rum.core/defcc rum.core/defc
|
||||||
rum.core/with-context clojure.core/let
|
rum.core/with-context clojure.core/let
|
||||||
rum.core/defcontext clojure.core/def
|
rum.core/defcontext clojure.core/def
|
||||||
|
|||||||
2
deps.edn
2
deps.edn
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
datascript-transit/datascript-transit {:mvn/version "0.3.0"}
|
datascript-transit/datascript-transit {:mvn/version "0.3.0"}
|
||||||
borkdude/rewrite-edn {:mvn/version "0.4.7"}
|
borkdude/rewrite-edn {:mvn/version "0.4.7"}
|
||||||
funcool/promesa {:mvn/version "4.0.2"}
|
funcool/promesa {:mvn/version "11.0.678"}
|
||||||
medley/medley {:mvn/version "1.4.0"}
|
medley/medley {:mvn/version "1.4.0"}
|
||||||
metosin/reitit-frontend {:mvn/version "0.3.10"}
|
metosin/reitit-frontend {:mvn/version "0.3.10"}
|
||||||
cljs-bean/cljs-bean {:mvn/version "1.5.0"}
|
cljs-bean/cljs-bean {:mvn/version "1.5.0"}
|
||||||
|
|||||||
2
deps/graph-parser/deps.edn
vendored
2
deps/graph-parser/deps.edn
vendored
@@ -9,7 +9,7 @@
|
|||||||
;; stubbed in nbb
|
;; stubbed in nbb
|
||||||
com.lambdaisland/glogi {:mvn/version "1.1.144"}
|
com.lambdaisland/glogi {:mvn/version "1.1.144"}
|
||||||
;; built in to nbb
|
;; built in to nbb
|
||||||
funcool/promesa {:mvn/version "4.0.2"}
|
funcool/promesa {:mvn/version "11.0.678"}
|
||||||
cljs-bean/cljs-bean {:mvn/version "1.5.0"}}
|
cljs-bean/cljs-bean {:mvn/version "1.5.0"}}
|
||||||
|
|
||||||
:aliases
|
:aliases
|
||||||
|
|||||||
2
deps/shui/deps.edn
vendored
2
deps/shui/deps.edn
vendored
@@ -2,7 +2,7 @@
|
|||||||
:deps
|
:deps
|
||||||
{org.clojure/clojure {:mvn/version "1.11.1"}
|
{org.clojure/clojure {:mvn/version "1.11.1"}
|
||||||
org.clojure/clojurescript {:mvn/version "1.11.132"}
|
org.clojure/clojurescript {:mvn/version "1.11.132"}
|
||||||
funcool/promesa {:mvn/version "4.0.2"}
|
funcool/promesa {:mvn/version "11.0.678"}
|
||||||
rum/rum {:mvn/version "0.12.9"}
|
rum/rum {:mvn/version "0.12.9"}
|
||||||
medley/medley {:mvn/version "1.4.0"}
|
medley/medley {:mvn/version "1.4.0"}
|
||||||
cljs-bean/cljs-bean {:mvn/version "1.5.0"}}}
|
cljs-bean/cljs-bean {:mvn/version "1.5.0"}}}
|
||||||
|
|||||||
@@ -154,6 +154,43 @@
|
|||||||
(db-based-query)
|
(db-based-query)
|
||||||
(file-based-query)))
|
(file-based-query)))
|
||||||
|
|
||||||
|
(defn ->block
|
||||||
|
([type]
|
||||||
|
(->block type nil))
|
||||||
|
([type optional]
|
||||||
|
(let [format (get (state/get-edit-block) :block/format)
|
||||||
|
markdown-src? (and (= format :markdown)
|
||||||
|
(= (string/lower-case type) "src"))
|
||||||
|
[left right] (cond
|
||||||
|
markdown-src?
|
||||||
|
["```" "\n```"]
|
||||||
|
|
||||||
|
:else
|
||||||
|
(->> ["#+BEGIN_%s" "\n#+END_%s"]
|
||||||
|
(map #(util/format %
|
||||||
|
(string/upper-case type)))))
|
||||||
|
template (str
|
||||||
|
left
|
||||||
|
(if optional (str " " optional) "")
|
||||||
|
"\n"
|
||||||
|
right)
|
||||||
|
backward-pos (if (= type "src")
|
||||||
|
(+ 1 (count right))
|
||||||
|
(count right))]
|
||||||
|
[[:editor/input template {:type "block"
|
||||||
|
:last-pattern command-trigger
|
||||||
|
:backward-pos backward-pos}]])))
|
||||||
|
|
||||||
|
(defn- advanced-query-steps
|
||||||
|
[]
|
||||||
|
(if (config/db-based-graph? (state/get-current-repo))
|
||||||
|
[[:editor/input "" {:last-pattern command-trigger}]
|
||||||
|
[:editor/set-property :block/tags :logseq.class/Query]
|
||||||
|
[:editor/set-property :logseq.property/query ""]
|
||||||
|
[:editor/set-property-on-block-property :logseq.property/query :logseq.property.node/type :code]
|
||||||
|
[:editor/set-property-on-block-property :logseq.property/query :logseq.property.code/mode "clojure"]]
|
||||||
|
(->block "query")))
|
||||||
|
|
||||||
(defn db-based-code-block
|
(defn db-based-code-block
|
||||||
[]
|
[]
|
||||||
[[:editor/input "" {:last-pattern command-trigger}]
|
[[:editor/input "" {:last-pattern command-trigger}]
|
||||||
@@ -173,7 +210,6 @@
|
|||||||
(db-based-code-block)
|
(db-based-code-block)
|
||||||
(file-based-code-block)))
|
(file-based-code-block)))
|
||||||
|
|
||||||
(declare ->block)
|
|
||||||
(defn quote-block-steps
|
(defn quote-block-steps
|
||||||
[]
|
[]
|
||||||
(if (config/db-based-graph? (state/get-current-repo))
|
(if (config/db-based-graph? (state/get-current-repo))
|
||||||
@@ -256,33 +292,6 @@
|
|||||||
(defonce *matched-commands (atom nil))
|
(defonce *matched-commands (atom nil))
|
||||||
(defonce *initial-commands (atom nil))
|
(defonce *initial-commands (atom nil))
|
||||||
|
|
||||||
(defn ->block
|
|
||||||
([type]
|
|
||||||
(->block type nil))
|
|
||||||
([type optional]
|
|
||||||
(let [format (get (state/get-edit-block) :block/format)
|
|
||||||
markdown-src? (and (= format :markdown)
|
|
||||||
(= (string/lower-case type) "src"))
|
|
||||||
[left right] (cond
|
|
||||||
markdown-src?
|
|
||||||
["```" "\n```"]
|
|
||||||
|
|
||||||
:else
|
|
||||||
(->> ["#+BEGIN_%s" "\n#+END_%s"]
|
|
||||||
(map #(util/format %
|
|
||||||
(string/upper-case type)))))
|
|
||||||
template (str
|
|
||||||
left
|
|
||||||
(if optional (str " " optional) "")
|
|
||||||
"\n"
|
|
||||||
right)
|
|
||||||
backward-pos (if (= type "src")
|
|
||||||
(+ 1 (count right))
|
|
||||||
(count right))]
|
|
||||||
[[:editor/input template {:type "block"
|
|
||||||
:last-pattern command-trigger
|
|
||||||
:backward-pos backward-pos}]])))
|
|
||||||
|
|
||||||
(defn ->properties
|
(defn ->properties
|
||||||
[]
|
[]
|
||||||
[[:editor/clear-current-slash]
|
[[:editor/clear-current-slash]
|
||||||
@@ -375,7 +384,6 @@
|
|||||||
(cond->
|
(cond->
|
||||||
[;; Should this be replaced by "Code block"?
|
[;; Should this be replaced by "Code block"?
|
||||||
["Src" (->block "src") "Create a code block"]
|
["Src" (->block "src") "Create a code block"]
|
||||||
["Advanced Query" (->block "query") "Create an advanced query block"]
|
|
||||||
["Math block" (->block "export" "latex") "Create a latex block"]
|
["Math block" (->block "export" "latex") "Create a latex block"]
|
||||||
["Note" (->block "note") "Create a note block"]
|
["Note" (->block "note") "Create a note block"]
|
||||||
["Tip" (->block "tip") "Create a tip block"]
|
["Tip" (->block "tip") "Create a tip block"]
|
||||||
@@ -399,6 +407,7 @@
|
|||||||
query-doc
|
query-doc
|
||||||
:icon/query
|
:icon/query
|
||||||
"ADVANCED"]
|
"ADVANCED"]
|
||||||
|
["Advanced Query" (advanced-query-steps) "Create an advanced query block" :icon/advanced-query]
|
||||||
(when-not db?
|
(when-not db?
|
||||||
["Zotero" (zotero-steps) "Import Zotero journal article" :icon/circle-letter-z])
|
["Zotero" (zotero-steps) "Import Zotero journal article" :icon/circle-letter-z])
|
||||||
["Query function" [[:editor/input "{{function }}" {:backward-pos 2}]] "Create a query function" :icon/queryCode]
|
["Query function" [[:editor/input "{{function }}" {:backward-pos 2}]] "Create a query function" :icon/queryCode]
|
||||||
@@ -739,6 +748,14 @@
|
|||||||
(when-let [block (state/get-edit-block)]
|
(when-let [block (state/get-edit-block)]
|
||||||
(db-property-handler/set-block-property! (:db/id block) property-id value))))
|
(db-property-handler/set-block-property! (:db/id block) property-id value))))
|
||||||
|
|
||||||
|
(defmethod handle-step :editor/set-property-on-block-property [[_ block-property-id property-id value]]
|
||||||
|
(when (config/db-based-graph? (state/get-current-repo))
|
||||||
|
(let [updated-block (when-let [block-uuid (:block/uuid (state/get-edit-block))]
|
||||||
|
(db/entity [:block/uuid block-uuid]))
|
||||||
|
block-property-value (get updated-block block-property-id)]
|
||||||
|
(when block-property-value
|
||||||
|
(db-property-handler/set-block-property! (:db/id block-property-value) property-id value)))))
|
||||||
|
|
||||||
(defn- file-based-set-priority
|
(defn- file-based-set-priority
|
||||||
[priority]
|
[priority]
|
||||||
(when-let [input-id (state/get-edit-input-id)]
|
(when-let [input-id (state/get-edit-input-id)]
|
||||||
@@ -897,8 +914,11 @@
|
|||||||
|
|
||||||
(defn handle-steps
|
(defn handle-steps
|
||||||
[vector' format]
|
[vector' format]
|
||||||
(doseq [step vector']
|
(if (config/db-based-graph? (state/get-current-repo))
|
||||||
(handle-step step format)))
|
(p/doseq [step vector']
|
||||||
|
(handle-step step format))
|
||||||
|
(doseq [step vector']
|
||||||
|
(handle-step step format))))
|
||||||
|
|
||||||
(defn exec-plugin-simple-command!
|
(defn exec-plugin-simple-command!
|
||||||
[pid {:keys [block-id] :as cmd} action]
|
[pid {:keys [block-id] :as cmd} action]
|
||||||
|
|||||||
Reference in New Issue
Block a user