mirror of
https://github.com/logseq/logseq.git
synced 2026-02-01 22:47:36 +00:00
cleanup
This commit is contained in:
20
deps/db/src/logseq/db/common/view.cljs
vendored
20
deps/db/src/logseq/db/common/view.cljs
vendored
@@ -290,16 +290,12 @@
|
||||
(map :e)
|
||||
set))
|
||||
|
||||
(defn- get-entities-for-all-pages [db sorting property-ident {:keys [db-based?]}]
|
||||
(defn- get-entities-for-all-pages [db sorting property-ident]
|
||||
(let [refs-count? (and (coll? sorting) (some (fn [m] (= (:id m) :block.temp/refs-count)) sorting))
|
||||
exclude-ids (when db-based? (get-exclude-page-ids db))]
|
||||
exclude-ids (get-exclude-page-ids db)]
|
||||
(keep (fn [d]
|
||||
(let [e (entity-plus/unsafe->Entity db (:e d))]
|
||||
(when-not (if db-based?
|
||||
(exclude-ids (:db/id e))
|
||||
(or (ldb/hidden-or-internal-tag? e)
|
||||
(entity-util/property? e)
|
||||
(entity-util/built-in? e)))
|
||||
(when-not (exclude-ids (:db/id e))
|
||||
(cond-> e
|
||||
refs-count?
|
||||
(assoc :block.temp/refs-count (common-initial-data/get-block-refs-count db (:e d)))))))
|
||||
@@ -311,11 +307,10 @@
|
||||
view-for-id (or (:db/id view-for) view-for-id*)
|
||||
non-hidden-e (fn [id] (let [e (d/entity db id)]
|
||||
(when-not (entity-util/hidden? e)
|
||||
e)))
|
||||
db-based? (entity-plus/db-based-graph? db)]
|
||||
e)))]
|
||||
(case feat-type
|
||||
:all-pages
|
||||
(get-entities-for-all-pages db sorting property-ident {:db-based? db-based?})
|
||||
(get-entities-for-all-pages db sorting property-ident)
|
||||
|
||||
:class-objects
|
||||
(db-class/get-class-objects db view-for-id)
|
||||
@@ -443,10 +438,7 @@
|
||||
:else
|
||||
(let [view (d/entity db view-id)
|
||||
group-by-property (:logseq.property.view/group-by-property view)
|
||||
db-based? (entity-plus/db-based-graph? db)
|
||||
list-view? (or (= :logseq.property.view/type.list (:db/ident (:logseq.property.view/type view)))
|
||||
(and (not db-based?)
|
||||
(contains? #{:linked-references :unlinked-references} view-feature-type)))
|
||||
list-view? (= :logseq.property.view/type.list (:db/ident (:logseq.property.view/type view)))
|
||||
group-by-property-ident (or (:db/ident group-by-property) group-by-property-ident)
|
||||
group-by-closed-values? (some? (:property/closed-values group-by-property))
|
||||
ref-property? (= (:db/valueType group-by-property) :db.type/ref)
|
||||
|
||||
@@ -283,8 +283,6 @@ export type ExternalCommandType =
|
||||
| 'logseq.editor/up'
|
||||
| 'logseq.editor/expand-block-children'
|
||||
| 'logseq.editor/collapse-block-children'
|
||||
| 'logseq.editor/open-file-in-default-app'
|
||||
| 'logseq.editor/open-file-in-directory'
|
||||
| 'logseq.editor/select-all-blocks'
|
||||
| 'logseq.editor/toggle-open-blocks'
|
||||
| 'logseq.editor/zoom-in'
|
||||
|
||||
@@ -124,17 +124,16 @@
|
||||
page-menu (if (and working-page? (ldb/page? page))
|
||||
(page-menu/page-menu page)
|
||||
(when-not config/publishing?
|
||||
(when (config/db-based-graph?)
|
||||
(let [block-id-str (str (:block/uuid page))
|
||||
favorited? (page-handler/favorited? block-id-str)]
|
||||
[{:title (if favorited?
|
||||
(t :page/unfavorite)
|
||||
(t :page/add-to-favorites))
|
||||
:options {:on-click
|
||||
(fn []
|
||||
(if favorited?
|
||||
(page-handler/<unfavorite-page! block-id-str)
|
||||
(page-handler/<favorite-page! block-id-str)))}}]))))
|
||||
(let [block-id-str (str (:block/uuid page))
|
||||
favorited? (page-handler/favorited? block-id-str)]
|
||||
[{:title (if favorited?
|
||||
(t :page/unfavorite)
|
||||
(t :page/add-to-favorites))
|
||||
:options {:on-click
|
||||
(fn []
|
||||
(if favorited?
|
||||
(page-handler/<unfavorite-page! block-id-str)
|
||||
(page-handler/<favorite-page! block-id-str)))}}])))
|
||||
page-menu-and-hr (concat page-menu [{:hr true}])
|
||||
login? (and (state/sub :auth/id-token) (user-handler/logged-in?))
|
||||
items (fn []
|
||||
@@ -375,8 +374,7 @@
|
||||
(state/set-left-sidebar-open!
|
||||
(not (:ui/left-sidebar-open? @state/state))))})
|
||||
custom-home-page? (and (state/custom-home-page?)
|
||||
(= (state/sub-default-home-page) (state/get-current-page)))
|
||||
db-based? (config/db-based-graph? current-repo)]
|
||||
(= (state/sub-default-home-page) (state/get-current-page)))]
|
||||
[:div.cp__header.drag-region#head
|
||||
{:class (util/classnames [{:electron-mac electron-mac?
|
||||
:native-ios (mobile-util/native-ios?)
|
||||
@@ -419,7 +417,6 @@
|
||||
(when (and current-repo
|
||||
(ldb/get-graph-rtc-uuid (db/get-db))
|
||||
(user-handler/logged-in?)
|
||||
db-based?
|
||||
(user-handler/rtc-group?))
|
||||
[:<>
|
||||
(recent-slider)
|
||||
@@ -432,8 +429,7 @@
|
||||
(when (user-handler/logged-in?)
|
||||
(rtc-indicator/uploading-detail))
|
||||
|
||||
(when db-based?
|
||||
(semantic-search-progressing current-repo))
|
||||
(semantic-search-progressing current-repo)
|
||||
|
||||
(when (and (not= (state/get-current-route) :home)
|
||||
(not custom-home-page?))
|
||||
|
||||
@@ -236,23 +236,6 @@
|
||||
[?b :block/tags ?class-id]]
|
||||
class-ids)))
|
||||
|
||||
(defn <get-whiteboards
|
||||
[graph]
|
||||
(p/let [result (if (config/db-based-graph? graph)
|
||||
(<q graph {:transact-db? false}
|
||||
'[:find [(pull ?page [:db/id :block/uuid :block/name :block/title :block/created-at :block/updated-at]) ...]
|
||||
:where
|
||||
[?page :block/tags :logseq.class/Whiteboard]
|
||||
[?page :block/name]])
|
||||
(<q graph {:transact-db? false}
|
||||
'[:find [(pull ?page [:db/id :block/uuid :block/name :block/title :block/created-at :block/updated-at]) ...]
|
||||
:where
|
||||
[?page :block/type "whiteboard"]
|
||||
[?page :block/name]]))]
|
||||
(->> result
|
||||
(sort-by :block/updated-at)
|
||||
reverse)))
|
||||
|
||||
(defn <get-views
|
||||
[graph class-id view-feature-type]
|
||||
(<q graph {:transact-db? true}
|
||||
|
||||
@@ -55,9 +55,7 @@
|
||||
|
||||
:else
|
||||
repo-name)]
|
||||
(if (config/db-based-graph? repo-name')
|
||||
(string/replace-first repo-name' config/db-version-prefix "")
|
||||
repo-name')))
|
||||
(string/replace-first repo-name' config/db-version-prefix "")))
|
||||
|
||||
(defn remove-conn!
|
||||
[repo]
|
||||
@@ -84,9 +82,7 @@
|
||||
(start! repo {}))
|
||||
([repo {:keys [listen-handler]}]
|
||||
(let [db-name (db-conn-state/get-repo-path repo)
|
||||
db-conn (if (config/db-based-graph? repo)
|
||||
(d/create-conn db-schema/schema)
|
||||
(gp-db/start-conn))]
|
||||
db-conn (d/create-conn db-schema/schema)]
|
||||
(destroy-all!)
|
||||
(swap! conns assoc db-name db-conn)
|
||||
(when listen-handler
|
||||
|
||||
@@ -47,9 +47,7 @@
|
||||
"Replace `[[internal-id]]` with `[[page name]]`"
|
||||
[item eid]
|
||||
(if-let [db (conn/get-db)]
|
||||
(if (entity-plus/db-based-graph? db)
|
||||
(db-content/update-block-content db item eid)
|
||||
item)
|
||||
(db-content/update-block-content db item eid)
|
||||
item))
|
||||
|
||||
(defn pull
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
[frontend.db.model :as db-model]
|
||||
[frontend.db.react :as react]
|
||||
[frontend.extensions.fsrs :as fsrs]
|
||||
[frontend.fs :as fs]
|
||||
[frontend.handler.assets :as assets-handler]
|
||||
[frontend.handler.code :as code-handler]
|
||||
[frontend.handler.common.page :as page-common-handler]
|
||||
@@ -57,9 +56,7 @@
|
||||
(defmethod handle :graph/added [[_ repo {:keys [empty-graph?]}]]
|
||||
(search-handler/rebuild-indices!)
|
||||
(plugin-handler/hook-plugin-app :graph-after-indexed {:repo repo :empty-graph? empty-graph?})
|
||||
(route-handler/redirect-to-home!)
|
||||
(when-let [dir-name (and (not (config/db-based-graph? repo)) (config/get-repo-dir repo))]
|
||||
(fs/watch-dir! dir-name)))
|
||||
(route-handler/redirect-to-home!))
|
||||
|
||||
(defmethod handle :init/commands [_]
|
||||
(page-handler/init-commands!))
|
||||
@@ -67,16 +64,13 @@
|
||||
(defn- graph-switch
|
||||
[graph]
|
||||
(react/clear-query-state!)
|
||||
(let [db-based? (config/db-based-graph? graph)]
|
||||
(state/set-current-repo! graph)
|
||||
(page-handler/init-commands!)
|
||||
;; load config
|
||||
(repo-config-handler/restore-repo-config! graph)
|
||||
(when-not (= :draw (state/get-current-route))
|
||||
(route-handler/redirect-to-home!))
|
||||
(when-let [dir-name (and (not db-based?) (config/get-repo-dir graph))]
|
||||
(fs/watch-dir! dir-name))
|
||||
(graph-handler/settle-metadata-to-local! {:last-seen-at (js/Date.now)})))
|
||||
(state/set-current-repo! graph)
|
||||
(page-handler/init-commands!)
|
||||
;; load config
|
||||
(repo-config-handler/restore-repo-config! graph)
|
||||
(when-not (= :draw (state/get-current-route))
|
||||
(route-handler/redirect-to-home!))
|
||||
(graph-handler/settle-metadata-to-local! {:last-seen-at (js/Date.now)}))
|
||||
|
||||
;; Parameters for the `persist-db` function, to show the notification messages
|
||||
(defn- graph-switch-on-persisted
|
||||
@@ -145,12 +139,6 @@
|
||||
;; FIXME: config may not be loaded when the graph is ready.
|
||||
(defmethod handle :graph/ready
|
||||
[[_ repo]]
|
||||
(when (config/local-file-based-graph? repo)
|
||||
(p/let [dir (config/get-repo-dir repo)
|
||||
dir-exists? (fs/dir-exists? dir)]
|
||||
(when (and (not dir-exists?)
|
||||
(not util/nfs?))
|
||||
(state/pub-event! [:graph/dir-gone dir]))))
|
||||
;; FIXME: an ugly implementation for redirecting to page on new window is restored
|
||||
(repo-handler/graph-ready! repo))
|
||||
|
||||
@@ -164,7 +152,7 @@
|
||||
{:schema-version (str db-schema/version)
|
||||
:db-schema-version (when-let [db (db/get-db)]
|
||||
(str (:kv/value (db/entity db :logseq.kv/schema-version))))
|
||||
:db-based (config/db-based-graph? (state/get-current-repo))}
|
||||
:db-based true}
|
||||
payload)]
|
||||
(Sentry/captureException error
|
||||
(bean/->js {:tags payload
|
||||
|
||||
@@ -352,34 +352,9 @@
|
||||
(:db/id page)
|
||||
:page)))
|
||||
|
||||
(defn open-file-in-default-app []
|
||||
(if-let [file-rpath (and (util/electron?) (page-util/get-page-file-rpath))]
|
||||
(let [repo-dir (config/get-repo-dir (state/get-current-repo))
|
||||
file-fpath (path/path-join repo-dir file-rpath)]
|
||||
(js/window.apis.openPath file-fpath))
|
||||
(notification/show! "No file found" :warning)))
|
||||
|
||||
(defn copy-current-file
|
||||
"FIXME: clarify usage, copy file or copy file path"
|
||||
[]
|
||||
(if-let [file-rpath (and (util/electron?) (page-util/get-page-file-rpath))]
|
||||
(let [repo-dir (config/get-repo-dir (state/get-current-repo))
|
||||
file-fpath (path/path-join repo-dir file-rpath)]
|
||||
(util/copy-to-clipboard! file-fpath))
|
||||
(notification/show! "No file found" :warning)))
|
||||
|
||||
(defn open-file-in-directory []
|
||||
(if-let [file-rpath (and (util/electron?) (page-util/get-page-file-rpath))]
|
||||
(let [repo-dir (config/get-repo-dir (state/get-current-repo))
|
||||
file-fpath (path/path-join repo-dir file-rpath)]
|
||||
(ipc/ipc "openFileInFolder" file-fpath))
|
||||
(notification/show! "No file found" :warning)))
|
||||
|
||||
(defn copy-page-url
|
||||
([]
|
||||
(let [id (if (config/db-based-graph? (state/get-current-repo))
|
||||
(page-util/get-current-page-uuid)
|
||||
(page-util/get-current-page-name))]
|
||||
(let [id (page-util/get-current-page-uuid)]
|
||||
(copy-page-url id)))
|
||||
([page-uuid]
|
||||
(if page-uuid
|
||||
|
||||
@@ -391,7 +391,7 @@
|
||||
(:resp resp))))))
|
||||
|
||||
(defn <request [api-name & args]
|
||||
(go (apply <request* api-name args)))
|
||||
(apply <request* api-name args))
|
||||
|
||||
(defn storage-exceed-limit?
|
||||
[exp]
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
(ns frontend.modules.shortcut.config
|
||||
(:require [clojure.data :as data]
|
||||
[clojure.string :as string]
|
||||
[electron.ipc :as ipc]
|
||||
[frontend.commands :as commands]
|
||||
[frontend.components.commit :as commit]
|
||||
[frontend.config :as config]
|
||||
@@ -14,7 +13,6 @@
|
||||
[frontend.handler.history :as history]
|
||||
[frontend.handler.journal :as journal-handler]
|
||||
[frontend.handler.jump :as jump-handler]
|
||||
[frontend.handler.notification :as notification]
|
||||
[frontend.handler.page :as page-handler]
|
||||
[frontend.handler.paste :as paste-handler]
|
||||
[frontend.handler.plugin :as plugin-handler]
|
||||
@@ -27,8 +25,7 @@
|
||||
[frontend.modules.shortcut.before :as m]
|
||||
[frontend.state :as state]
|
||||
[frontend.util :refer [mac?] :as util]
|
||||
[medley.core :as medley]
|
||||
[promesa.core :as p]))
|
||||
[medley.core :as medley]))
|
||||
|
||||
(defn- search
|
||||
[mode]
|
||||
@@ -50,8 +47,6 @@
|
||||
;; * :fn - Fn or a qualified keyword that represents a fn
|
||||
;; * :inactive - Optional boolean to disable a shortcut for certain conditions
|
||||
;; e.g. a given platform or feature condition
|
||||
;; * :file-graph? - Optional boolean to identify a command to only be run in file graphs
|
||||
;; and warned gracefully in db graphs
|
||||
(def ^:large-vars/data-var all-built-in-keyboard-shortcuts
|
||||
{:pdf/previous-page {:binding "alt+p"
|
||||
:fn pdf-utils/prev-page}
|
||||
@@ -273,42 +268,35 @@
|
||||
:fn #(state/pub-event! [:editor/toggle-own-number-list (state/get-selection-block-ids)])}
|
||||
|
||||
:editor/add-property {:binding (if mac? "mod+p" "ctrl+alt+p")
|
||||
:db-graph? true
|
||||
:fn (fn [e]
|
||||
(when e (util/stop e))
|
||||
(state/pub-event! [:editor/new-property {}]))}
|
||||
:editor/set-tags {:binding "p t"
|
||||
:db-graph? true
|
||||
:selection? true
|
||||
:fn (fn []
|
||||
(state/pub-event! [:editor/new-property {:property-key "Tags"}]))}
|
||||
|
||||
:editor/add-property-deadline {:binding "p d"
|
||||
:db-graph? true
|
||||
:selection? true
|
||||
:fn (fn []
|
||||
(state/pub-event! [:editor/new-property {:property-key "Deadline"}]))}
|
||||
|
||||
:editor/add-property-status {:binding "p s"
|
||||
:db-graph? true
|
||||
:selection? true
|
||||
:fn (fn []
|
||||
(state/pub-event! [:editor/new-property {:property-key "Status"}]))}
|
||||
|
||||
:editor/add-property-priority {:binding "p p"
|
||||
:db-graph? true
|
||||
:selection? true
|
||||
:fn (fn []
|
||||
(state/pub-event! [:editor/new-property {:property-key "Priority"}]))}
|
||||
|
||||
:editor/add-property-icon {:binding "p i"
|
||||
:db-graph? true
|
||||
:selection? true
|
||||
:fn (fn []
|
||||
(state/pub-event! [:editor/new-property {:property-key "Icon"}]))}
|
||||
|
||||
:editor/toggle-display-hidden-properties {:binding "p a"
|
||||
:db-graph? true
|
||||
:fn ui-handler/toggle-show-empty-hidden-properties!}
|
||||
|
||||
:ui/toggle-brackets {:binding "t b"
|
||||
@@ -390,12 +378,6 @@
|
||||
:inactive (not (util/electron?))
|
||||
:binding "mod+s"}
|
||||
|
||||
:graph/re-index {:fn (fn []
|
||||
(p/let [multiple-windows? (ipc/ipc "graphHasMultipleWindows" (state/get-current-repo))]
|
||||
(state/pub-event! [:graph/ask-for-re-index (atom multiple-windows?) nil])))
|
||||
:file-graph? true
|
||||
:binding []}
|
||||
|
||||
:command/run {:binding "mod+shift+1"
|
||||
:inactive (not (util/electron?))
|
||||
:fn #(do
|
||||
@@ -457,25 +439,10 @@
|
||||
:fn page-handler/toggle-favorite!}
|
||||
|
||||
:editor/quick-add {:binding (if mac? "mod+e" "mod+alt+e")
|
||||
:db-graph? true
|
||||
:inactive config/publishing?
|
||||
:fn editor-handler/quick-add}
|
||||
:editor/jump {:binding "mod+j"
|
||||
:fn jump-handler/jump-to}
|
||||
:editor/open-file-in-default-app {:binding "mod+d mod+a"
|
||||
:inactive (not (util/electron?))
|
||||
:file-graph? true
|
||||
:fn page-handler/open-file-in-default-app}
|
||||
|
||||
:editor/open-file-in-directory {:binding "mod+d mod+i"
|
||||
:inactive (not (util/electron?))
|
||||
:file-graph? true
|
||||
:fn page-handler/open-file-in-directory}
|
||||
|
||||
:editor/copy-current-file {:binding false
|
||||
:inactive (not (util/electron?))
|
||||
:file-graph? true
|
||||
:fn page-handler/copy-current-file}
|
||||
|
||||
:editor/copy-page-url {:binding []
|
||||
:inactive (not (util/electron?))
|
||||
@@ -541,31 +508,24 @@
|
||||
:fn :frontend.handler.common.developer/show-page-ast}
|
||||
|
||||
:misc/export-block-data {:binding []
|
||||
:db-graph? true
|
||||
:fn :frontend.handler.db-based.export/export-block-data}
|
||||
|
||||
:misc/export-page-data {:binding []
|
||||
:db-graph? true
|
||||
:fn :frontend.handler.db-based.export/export-page-data}
|
||||
|
||||
:misc/export-graph-ontology-data {:binding []
|
||||
:db-graph? true
|
||||
:fn :frontend.handler.db-based.export/export-graph-ontology-data}
|
||||
|
||||
:misc/import-edn-data {:binding []
|
||||
:db-graph? true
|
||||
:fn :frontend.handler.db-based.import/import-edn-data-dialog}
|
||||
|
||||
:dev/validate-db {:binding []
|
||||
:db-graph? true
|
||||
:inactive (not (state/developer-mode?))
|
||||
:fn :frontend.handler.common.developer/validate-db}
|
||||
:dev/rtc-stop {:binding []
|
||||
:db-graph? true
|
||||
:inactive (not (state/developer-mode?))
|
||||
:fn :frontend.handler.common.developer/rtc-stop}
|
||||
:dev/rtc-start {:binding []
|
||||
:db-graph? true
|
||||
:inactive (not (state/developer-mode?))
|
||||
:fn :frontend.handler.common.developer/rtc-start}})
|
||||
|
||||
@@ -591,24 +551,6 @@
|
||||
(resolved-fn)
|
||||
(throw (ex-info (str "Unable to resolve " keyword-fn " to a fn") {})))))
|
||||
|
||||
(defn- wrap-fn-with-db-graph-only-warning
|
||||
"Wraps DB graph only commands so they are only run in DB graphs and warned
|
||||
when in file graphs"
|
||||
[f]
|
||||
(fn []
|
||||
(if (config/db-based-graph? (state/get-current-repo))
|
||||
(f)
|
||||
(notification/show! "This command is only for DB graphs." :warning true nil 3000))))
|
||||
|
||||
(defn- wrap-fn-with-file-graph-only-warning
|
||||
"Wraps file graph only commands so they are only run in file graphs and warned
|
||||
when in DB graphs"
|
||||
[f]
|
||||
(fn []
|
||||
(if (config/db-based-graph? (state/get-current-repo))
|
||||
(notification/show! "This command is only for file graphs." :warning true nil 3000)
|
||||
(f))))
|
||||
|
||||
(defn build-category-map [ks]
|
||||
(->> (if (sequential? ks)
|
||||
ks (let [{:keys [ns includes excludes]} ks]
|
||||
@@ -626,13 +568,6 @@
|
||||
[k (if (keyword? (:fn v))
|
||||
(assoc v :fn (resolve-fn (:fn v)))
|
||||
v)]))
|
||||
(map (fn [[k v]]
|
||||
[k (cond (:file-graph? v)
|
||||
(update v :fn wrap-fn-with-file-graph-only-warning)
|
||||
(:db-graph? v)
|
||||
(update v :fn wrap-fn-with-db-graph-only-warning)
|
||||
:else
|
||||
v)]))
|
||||
(into {})))
|
||||
|
||||
;; This is the only var that should be publicly expose :fn functionality
|
||||
@@ -690,7 +625,6 @@
|
||||
:graph/add
|
||||
:graph/db-add
|
||||
:graph/db-save
|
||||
:graph/re-index
|
||||
:editor/cycle-todo
|
||||
:editor/up
|
||||
:editor/down
|
||||
@@ -765,9 +699,6 @@
|
||||
:ui/toggle-help
|
||||
:ui/toggle-theme
|
||||
:ui/toggle-contents
|
||||
:editor/open-file-in-default-app
|
||||
:editor/open-file-in-directory
|
||||
:editor/copy-current-file
|
||||
:editor/copy-page-url
|
||||
:editor/set-tags
|
||||
:editor/add-property-deadline
|
||||
@@ -935,14 +866,11 @@
|
||||
:graph/open
|
||||
:graph/remove
|
||||
:graph/add
|
||||
:graph/re-index
|
||||
:sidebar/close-top
|
||||
:sidebar/clear
|
||||
:sidebar/open-today-page
|
||||
:search/re-index
|
||||
:editor/insert-youtube-timestamp
|
||||
:editor/open-file-in-default-app
|
||||
:editor/open-file-in-directory
|
||||
:editor/copy-page-url
|
||||
:window/close
|
||||
:auto-complete/prev
|
||||
|
||||
@@ -128,19 +128,6 @@
|
||||
(fix db))]
|
||||
(concat common-fix additional-fix)))})
|
||||
|
||||
(comment
|
||||
(defn- rename-classes
|
||||
[classes-to-rename]
|
||||
(fn [db]
|
||||
(when (ldb/db-based-graph? db)
|
||||
(mapv (fn [[old new]]
|
||||
(merge {:db/id (:db/id (d/entity db old))
|
||||
:db/ident new}
|
||||
(when-let [new-title (get-in db-class/built-in-classes [new :title])]
|
||||
{:block/title new-title
|
||||
:block/name (common-util/page-name-sanity-lc new-title)})))
|
||||
classes-to-rename)))))
|
||||
|
||||
(defn- add-quick-add-page
|
||||
[_db]
|
||||
(let [page (-> (-> (sqlite-util/build-new-page common-config/quick-add-page-name)
|
||||
@@ -284,7 +271,7 @@
|
||||
|
||||
(defn- upgrade-version!
|
||||
"Return tx-data"
|
||||
[conn db-based? version {:keys [properties classes rename-db-idents fix] :as migrate-updates}]
|
||||
[conn version {:keys [properties classes rename-db-idents fix] :as migrate-updates}]
|
||||
(let [version (db-schema/parse-schema-version version)
|
||||
db @conn
|
||||
new-properties (->> (select-keys db-property/built-in-properties properties)
|
||||
@@ -311,9 +298,7 @@
|
||||
(rename-db-ident/rename-db-idents-migration-tx-data db rename-db-idents))
|
||||
fixes (when (fn? fix)
|
||||
(fix db))
|
||||
tx-data (if db-based?
|
||||
(concat new-class-idents new-properties new-classes rename-db-idents-tx-data fixes)
|
||||
fixes)
|
||||
tx-data (concat new-class-idents new-properties new-classes rename-db-idents-tx-data fixes)
|
||||
tx-data' (concat
|
||||
[(sqlite-util/kv :logseq.kv/schema-version version)]
|
||||
tx-data)
|
||||
@@ -328,38 +313,36 @@
|
||||
"Migrate 'frontend' datascript schema and data. To add a new migration,
|
||||
add an entry to schema-version->updates and bump db-schema/version"
|
||||
[conn & {:keys [target-version] :or {target-version db-schema/version}}]
|
||||
(when (ldb/db-based-graph? @conn)
|
||||
(let [db @conn
|
||||
version-in-db (db-schema/parse-schema-version (or (:kv/value (d/entity db :logseq.kv/schema-version)) 0))
|
||||
compare-result (db-schema/compare-schema-version target-version version-in-db)]
|
||||
(cond
|
||||
(zero? compare-result)
|
||||
nil
|
||||
(let [db @conn
|
||||
version-in-db (db-schema/parse-schema-version (or (:kv/value (d/entity db :logseq.kv/schema-version)) 0))
|
||||
compare-result (db-schema/compare-schema-version target-version version-in-db)]
|
||||
(cond
|
||||
(zero? compare-result)
|
||||
nil
|
||||
|
||||
(neg? compare-result) ; outdated client, db version could be synced from server
|
||||
(worker-util/post-message :notification ["Your app is using an outdated version that is incompatible with your current graph. Please update your app before editing this graph." :error false])
|
||||
(neg? compare-result) ; outdated client, db version could be synced from server
|
||||
(worker-util/post-message :notification ["Your app is using an outdated version that is incompatible with your current graph. Please update your app before editing this graph." :error false])
|
||||
|
||||
(pos? compare-result)
|
||||
(try
|
||||
(let [db-based? (ldb/db-based-graph? @conn)
|
||||
updates (keep (fn [[v updates]]
|
||||
(let [v* (db-schema/parse-schema-version v)]
|
||||
(when (and (neg? (db-schema/compare-schema-version version-in-db v*))
|
||||
(not (pos? (db-schema/compare-schema-version v* target-version))))
|
||||
[v updates])))
|
||||
schema-version->updates)
|
||||
result-ks [:tx-data :db-before :db-after :migrate-updates]
|
||||
*upgrade-result-coll (atom [])]
|
||||
(println "DB schema migrated from" version-in-db)
|
||||
(doseq [[v m] updates]
|
||||
(let [r (upgrade-version! conn db-based? v m)]
|
||||
(swap! *upgrade-result-coll conj (select-keys r result-ks))))
|
||||
(swap! *upgrade-result-coll conj
|
||||
(select-keys (ensure-built-in-data-exists! conn) result-ks))
|
||||
{:from-version version-in-db
|
||||
:to-version target-version
|
||||
:upgrade-result-coll @*upgrade-result-coll})
|
||||
(catch :default e
|
||||
(prn :error (str "DB migration failed to migrate to " target-version " from " version-in-db ":"))
|
||||
(js/console.error e)
|
||||
(throw e)))))))
|
||||
(pos? compare-result)
|
||||
(try
|
||||
(let [updates (keep (fn [[v updates]]
|
||||
(let [v* (db-schema/parse-schema-version v)]
|
||||
(when (and (neg? (db-schema/compare-schema-version version-in-db v*))
|
||||
(not (pos? (db-schema/compare-schema-version v* target-version))))
|
||||
[v updates])))
|
||||
schema-version->updates)
|
||||
result-ks [:tx-data :db-before :db-after :migrate-updates]
|
||||
*upgrade-result-coll (atom [])]
|
||||
(println "DB schema migrated from" version-in-db)
|
||||
(doseq [[v m] updates]
|
||||
(let [r (upgrade-version! conn v m)]
|
||||
(swap! *upgrade-result-coll conj (select-keys r result-ks))))
|
||||
(swap! *upgrade-result-coll conj
|
||||
(select-keys (ensure-built-in-data-exists! conn) result-ks))
|
||||
{:from-version version-in-db
|
||||
:to-version target-version
|
||||
:upgrade-result-coll @*upgrade-result-coll})
|
||||
(catch :default e
|
||||
(prn :error (str "DB migration failed to migrate to " target-version " from " version-in-db ":"))
|
||||
(js/console.error e)
|
||||
(throw e))))))
|
||||
|
||||
@@ -52,20 +52,19 @@
|
||||
|
||||
(defn- remove-old-embeddings-and-reset-new-updates!
|
||||
[conn tx-data tx-meta]
|
||||
(when (ldb/db-based-graph? @conn)
|
||||
(let [;; Remove old :logseq.property.embedding/hnsw-label-updated-at when importing a graph
|
||||
remove-old-hnsw-tx-data (when (:import-db? tx-meta)
|
||||
(->> (d/datoms @conn :avet :logseq.property.embedding/hnsw-label-updated-at)
|
||||
(map (fn [d]
|
||||
[:db/retract (:e d) :logseq.property.embedding/hnsw-label-updated-at]))))
|
||||
(let [;; Remove old :logseq.property.embedding/hnsw-label-updated-at when importing a graph
|
||||
remove-old-hnsw-tx-data (when (:import-db? tx-meta)
|
||||
(->> (d/datoms @conn :avet :logseq.property.embedding/hnsw-label-updated-at)
|
||||
(map (fn [d]
|
||||
[:db/retract (:e d) :logseq.property.embedding/hnsw-label-updated-at]))))
|
||||
;; Mark vector embedding
|
||||
mark-embedding-tx-data (->> (keep (fn [datom] (when (and (= :block/title (:a datom)) (:added datom) (not (string/blank? (:v datom))))
|
||||
(:e datom))) tx-data)
|
||||
mark-embedding-tx-data (->> (keep (fn [datom] (when (and (= :block/title (:a datom)) (:added datom) (not (string/blank? (:v datom))))
|
||||
(:e datom))) tx-data)
|
||||
;; Mark block embedding to be computed
|
||||
(map (fn [id] [:db/add id :logseq.property.embedding/hnsw-label-updated-at 0])))
|
||||
tx-data (concat remove-old-hnsw-tx-data mark-embedding-tx-data)]
|
||||
(when (seq tx-data)
|
||||
(ldb/transact! conn tx-data {:skip-validate-db? true})))))
|
||||
(map (fn [id] [:db/add id :logseq.property.embedding/hnsw-label-updated-at 0])))
|
||||
tx-data (concat remove-old-hnsw-tx-data mark-embedding-tx-data)]
|
||||
(when (seq tx-data)
|
||||
(ldb/transact! conn tx-data {:skip-validate-db? true}))))
|
||||
|
||||
(defn listen-db-changes!
|
||||
[repo conn & {:keys [handler-keys]}]
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
storage (new-sqlite-storage db)
|
||||
client-ops-storage (when-not @*publishing?
|
||||
(new-sqlite-storage client-ops-db))
|
||||
db-based? (sqlite-util/db-based-graph? repo)]
|
||||
db-based? true]
|
||||
(swap! *sqlite-conns assoc repo {:db db
|
||||
:search search-db
|
||||
:client-ops client-ops-db})
|
||||
|
||||
@@ -423,11 +423,10 @@
|
||||
(count (get-all-update-kv-value-ops* @conn)))))
|
||||
|
||||
(defn rtc-db-graph?
|
||||
"Is db-graph & RTC enabled"
|
||||
"Is RTC enabled"
|
||||
[repo]
|
||||
(and (sqlite-util/db-based-graph? repo)
|
||||
(or (exists? js/process)
|
||||
(some? (get-graph-uuid repo)))))
|
||||
(or (exists? js/process)
|
||||
(some? (get-graph-uuid repo))))
|
||||
|
||||
(defn create-pending-block-ops-count-flow
|
||||
[repo]
|
||||
|
||||
@@ -419,9 +419,7 @@
|
||||
(let [repo (worker-state/get-current-repo)
|
||||
token (worker-state/get-id-token)
|
||||
conn (worker-state/get-datascript-conn repo)]
|
||||
(if-not (and repo
|
||||
(sqlite-util/db-based-graph? repo)
|
||||
conn token)
|
||||
(if-not (and repo conn token)
|
||||
(log/info :skip-new-task--rtc-start
|
||||
{:repo repo
|
||||
:some?-conn (some? conn)
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
[logseq.common.util.namespace :as ns-util]
|
||||
[logseq.db :as ldb]
|
||||
[logseq.db.frontend.content :as db-content]
|
||||
[logseq.db.sqlite.util :as sqlite-util]
|
||||
[logseq.graph-parser.text :as text]
|
||||
[missionary.core :as m]))
|
||||
|
||||
@@ -236,9 +235,8 @@ DROP TRIGGER IF EXISTS blocks_au;
|
||||
[db]
|
||||
(let [page-ids (->> (d/datoms db :avet :block/name)
|
||||
(map :e))
|
||||
object-ids (when (ldb/db-based-graph? db)
|
||||
(->> (d/datoms db :avet :block/tags)
|
||||
(map :e)))
|
||||
object-ids (->> (d/datoms db :avet :block/tags)
|
||||
(map :e))
|
||||
blocks (->> (distinct (concat page-ids object-ids))
|
||||
(map #(d/entity db %)))]
|
||||
(remove hidden-entity? blocks)))
|
||||
@@ -459,7 +457,7 @@ DROP TRIGGER IF EXISTS blocks_au;
|
||||
(keep block->index)))
|
||||
|
||||
(defn- get-blocks-from-datoms-impl
|
||||
[repo {:keys [db-after db-before]} datoms]
|
||||
[{:keys [db-after db-before]} datoms]
|
||||
(when (seq datoms)
|
||||
(let [blocks-to-add-set (->> (filter :added datoms)
|
||||
(map :e)
|
||||
@@ -468,7 +466,7 @@ DROP TRIGGER IF EXISTS blocks_au;
|
||||
(filter #(= :block/uuid (:a %)))
|
||||
(map :e)
|
||||
(set))
|
||||
blocks-to-add-set' (if (and (sqlite-util/db-based-graph? repo) (seq blocks-to-add-set))
|
||||
blocks-to-add-set' (if (seq blocks-to-add-set)
|
||||
(->> blocks-to-add-set
|
||||
(mapcat (fn [id] (map :db/id (:block/_refs (d/entity db-after id)))))
|
||||
(concat blocks-to-add-set)
|
||||
@@ -481,7 +479,7 @@ DROP TRIGGER IF EXISTS blocks_au;
|
||||
(remove hidden-entity?))})))
|
||||
|
||||
(defn- get-affected-blocks
|
||||
[repo tx-report]
|
||||
[tx-report]
|
||||
(let [data (:tx-data tx-report)
|
||||
datoms (filter
|
||||
(fn [datom]
|
||||
@@ -489,11 +487,11 @@ DROP TRIGGER IF EXISTS blocks_au;
|
||||
(contains? #{:block/uuid :block/name :block/title :block/properties} (:a datom)))
|
||||
data)]
|
||||
(when (seq datoms)
|
||||
(get-blocks-from-datoms-impl repo tx-report datoms))))
|
||||
(get-blocks-from-datoms-impl tx-report datoms))))
|
||||
|
||||
(defn sync-search-indice
|
||||
[repo tx-report]
|
||||
(let [{:keys [blocks-to-add blocks-to-remove]} (get-affected-blocks repo tx-report)]
|
||||
(let [{:keys [blocks-to-add blocks-to-remove]} (get-affected-blocks tx-report)]
|
||||
;; update page title indice
|
||||
(let [fuzzy-blocks-to-add (filter page-or-object? blocks-to-add)
|
||||
fuzzy-blocks-to-remove (filter page-or-object? blocks-to-remove)]
|
||||
|
||||
@@ -84,12 +84,7 @@
|
||||
|
||||
(def get_current_graph_favorites
|
||||
(fn []
|
||||
(if (config/db-based-graph?)
|
||||
(db-based-api/get-favorites)
|
||||
(some->> (:favorites (state/get-config))
|
||||
(remove string/blank?)
|
||||
(filter string?)
|
||||
(bean/->js)))))
|
||||
(db-based-api/get-favorites)))
|
||||
|
||||
(def get_current_graph_recent
|
||||
(fn []
|
||||
|
||||
@@ -613,7 +613,6 @@
|
||||
:graph/add "Add a graph"
|
||||
:graph/db-add "Add a DB graph"
|
||||
:graph/db-save "Save the current db to the disk (~/logseq/graphs/your-current-graph)"
|
||||
:graph/re-index "Re-index current graph"
|
||||
:command/run "Run git command"
|
||||
:go/home "Go to home"
|
||||
:go/all-graphs "Go to all graphs"
|
||||
@@ -634,9 +633,6 @@
|
||||
:ui/customize-appearance "Customize appearance"
|
||||
;; :ui/open-new-window "Open another window"
|
||||
:command/toggle-favorite "Add to/remove from favorites"
|
||||
:editor/open-file-in-default-app "Open file in default app"
|
||||
:editor/open-file-in-directory "Open file in parent directory"
|
||||
:editor/copy-current-file "Copy current file"
|
||||
:editor/copy-page-url "Copy page url"
|
||||
:ui/toggle-wide-mode "Toggle wide mode"
|
||||
:ui/highlight-recent-blocks "Toggle highlight recent blocks"
|
||||
|
||||
Reference in New Issue
Block a user