mirror of
https://github.com/logseq/logseq.git
synced 2026-05-23 20:24:15 +00:00
Merge branch 'feat/db' into feat/capacitor-new
This commit is contained in:
2
deps.edn
2
deps.edn
@@ -5,7 +5,7 @@
|
||||
:sha "5d672bf84ed944414b9f61eeb83808ead7be9127"}
|
||||
|
||||
datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork
|
||||
:sha "3a41bbcdbe66b328bff36d9efd7548bad47f55b6"}
|
||||
:sha "4b1f15f05a6b4a718a62c247956206480e361ea6"}
|
||||
|
||||
datascript-transit/datascript-transit {:mvn/version "0.3.0"}
|
||||
borkdude/rewrite-edn {:mvn/version "0.4.7"}
|
||||
|
||||
2
deps/db/deps.edn
vendored
2
deps/db/deps.edn
vendored
@@ -1,7 +1,7 @@
|
||||
{:deps
|
||||
;; These deps are kept in sync with https://github.com/logseq/nbb-logseq/blob/main/bb.edn
|
||||
{datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork
|
||||
:sha "3a41bbcdbe66b328bff36d9efd7548bad47f55b6"}
|
||||
:sha "4b1f15f05a6b4a718a62c247956206480e361ea6"}
|
||||
datascript-transit/datascript-transit {:mvn/version "0.3.0"
|
||||
:exclusions [datascript/datascript]}
|
||||
cljs-bean/cljs-bean {:mvn/version "1.5.0"}
|
||||
|
||||
16
deps/db/src/logseq/db/common/sqlite.cljs
vendored
16
deps/db/src/logseq/db/common/sqlite.cljs
vendored
@@ -285,14 +285,14 @@
|
||||
|
||||
(defn get-recent-updated-pages
|
||||
[db]
|
||||
(->> (d/datoms db :avet :block/updated-at)
|
||||
vec
|
||||
rseq
|
||||
(keep (fn [datom]
|
||||
(let [e (d/entity db (:e datom))]
|
||||
(when (and (common-entity-util/page? e) (not (entity-util/hidden? e)))
|
||||
e))))
|
||||
(take 30)))
|
||||
(some->>
|
||||
(d/datoms db :avet :block/updated-at)
|
||||
rseq
|
||||
(keep (fn [datom]
|
||||
(let [e (d/entity db (:e datom))]
|
||||
(when (and (common-entity-util/page? e) (not (entity-util/hidden? e)))
|
||||
e))))
|
||||
(take 30)))
|
||||
|
||||
(defn get-initial-data
|
||||
"Returns current database schema and initial data.
|
||||
|
||||
2
deps/db/src/logseq/db/frontend/class.cljs
vendored
2
deps/db/src/logseq/db/frontend/class.cljs
vendored
@@ -110,7 +110,7 @@
|
||||
(def private-tags
|
||||
"Built-in classes that are private and should not be used by a user directly.
|
||||
These used to be in block/type"
|
||||
(set/union internal-tags
|
||||
(set/union (disj internal-tags :logseq.class/Root)
|
||||
#{:logseq.class/Journal :logseq.class/Whiteboard}))
|
||||
|
||||
(def hidden-tags
|
||||
|
||||
2
deps/db/src/logseq/db/frontend/schema.cljs
vendored
2
deps/db/src/logseq/db/frontend/schema.cljs
vendored
@@ -37,7 +37,7 @@
|
||||
(map (juxt :major :minor)
|
||||
[(parse-schema-version x) (parse-schema-version y)])))
|
||||
|
||||
(def version (parse-schema-version "64.5"))
|
||||
(def version (parse-schema-version "64.6"))
|
||||
|
||||
(defn major-version
|
||||
"Return a number.
|
||||
|
||||
2
deps/outliner/deps.edn
vendored
2
deps/outliner/deps.edn
vendored
@@ -1,7 +1,7 @@
|
||||
{:deps
|
||||
;; External deps should be kept in sync with https://github.com/logseq/nbb-logseq/blob/main/bb.edn
|
||||
{datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork
|
||||
:sha "3a41bbcdbe66b328bff36d9efd7548bad47f55b6"}
|
||||
:sha "4b1f15f05a6b4a718a62c247956206480e361ea6"}
|
||||
logseq/db {:local/root "../db"}
|
||||
logseq/graph-parser {:local/root "../db"}
|
||||
com.cognitect/transit-cljs {:mvn/version "0.8.280"}
|
||||
|
||||
@@ -2365,7 +2365,7 @@
|
||||
query (:logseq.property/query block)
|
||||
advanced-query? (and query? (= :code (:logseq.property.node/display-type query)))
|
||||
show-query? (and *show-query? @*show-query?)]
|
||||
[:div
|
||||
[:div.w-full
|
||||
{:class (if (and query? blank?)
|
||||
"inline-flex"
|
||||
"inline")
|
||||
|
||||
@@ -103,24 +103,22 @@
|
||||
[:div
|
||||
[:a.font-medium {:on-click #(export/export-repo-as-zip! current-repo)}
|
||||
(t :export-zip)]])
|
||||
|
||||
(when db-based?
|
||||
[:div
|
||||
[:a.font-medium {:on-click #(db-export-handler/export-repo-as-db-edn! current-repo)}
|
||||
(t :export-db-edn)]])
|
||||
(when db-based?
|
||||
|
||||
(when-not (mobile-util/native-platform?)
|
||||
[:div
|
||||
[:a.font-medium {:on-click #(export/export-repo-as-debug-transit! current-repo)}
|
||||
"Export debug transit file"]
|
||||
[:p.text-sm.opacity-70 "Any sensitive data will be removed in the exported transit file, you can send it to us for debugging."]])
|
||||
[:a.font-medium {:on-click #(export-text/export-repo-as-markdown! current-repo)}
|
||||
(t :export-markdown)]])
|
||||
|
||||
(when (util/electron?)
|
||||
[:div
|
||||
[:a.font-medium {:on-click #(export/download-repo-as-html! current-repo)}
|
||||
(t :export-public-pages)]])
|
||||
(when-not (or (mobile-util/native-platform?) db-based?)
|
||||
[:div
|
||||
[:a.font-medium {:on-click #(export-text/export-repo-as-markdown! current-repo)}
|
||||
(t :export-markdown)]])
|
||||
|
||||
(when-not (or (mobile-util/native-platform?) db-based?)
|
||||
[:div
|
||||
[:a.font-medium {:on-click #(export-opml/export-repo-as-opml! current-repo)}
|
||||
@@ -129,6 +127,11 @@
|
||||
[:div
|
||||
[:a.font-medium {:on-click #(export/export-repo-as-roam-json! current-repo)}
|
||||
(t :export-roam-json)]])
|
||||
(when db-based?
|
||||
[:div
|
||||
[:a.font-medium {:on-click #(export/export-repo-as-debug-transit! current-repo)}
|
||||
"Export debug transit file"]
|
||||
[:p.text-sm.opacity-70.mb-0 "Any sensitive data will be removed in the exported transit file, you can send it to us for debugging."]])
|
||||
|
||||
(when (and db-based? util/web-platform? (utils/nfsSupported))
|
||||
[:div
|
||||
|
||||
@@ -195,12 +195,13 @@
|
||||
(state/<invoke-db-worker :thread-api/export-get-debug-datoms repo))
|
||||
|
||||
(defn <get-all-page->content
|
||||
[repo]
|
||||
(state/<invoke-db-worker :thread-api/export-get-all-page->content repo))
|
||||
[repo options]
|
||||
(state/<invoke-db-worker :thread-api/export-get-all-page->content repo options))
|
||||
|
||||
(defn <get-file-contents
|
||||
[repo suffix]
|
||||
(p/let [page->content (<get-all-page->content repo)]
|
||||
(p/let [page->content (<get-all-page->content repo
|
||||
{:export-bullet-indentation (state/get-export-bullet-indentation)})]
|
||||
(clojure.core/map (fn [[page-title content]]
|
||||
{:path (str page-title "." suffix)
|
||||
:content content
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
(ns frontend.handler.export.text
|
||||
"export blocks/pages as text"
|
||||
(:refer-clojure :exclude [map filter mapcat concat remove newline])
|
||||
(:require [clojure.string :as string]
|
||||
[frontend.config :as config]
|
||||
[frontend.db :as db]
|
||||
@@ -545,9 +544,9 @@
|
||||
(defn export-repo-as-markdown!
|
||||
"TODO: indent-style and remove-options"
|
||||
[repo]
|
||||
(p/let [files (util/profile :get-file-content (common/<get-file-contents repo "md"))]
|
||||
(when (seq files)
|
||||
(let [files (export-files-as-markdown files nil)
|
||||
(p/let [files* (util/profile :get-file-content (common/<get-file-contents repo "md"))]
|
||||
(when (seq files*)
|
||||
(let [files (export-files-as-markdown files* nil)
|
||||
repo' (if (config/db-based-graph? repo)
|
||||
(string/replace repo config/db-version-prefix "")
|
||||
(path/basename repo))
|
||||
|
||||
@@ -661,6 +661,29 @@
|
||||
[:db/add (:e view-datom) :logseq.property.view/group-by-property block-page-prop-id])
|
||||
list-views)))
|
||||
|
||||
(defn- cardinality-one-multiple-values
|
||||
[conn _search-db]
|
||||
(let [db @conn
|
||||
attrs (keep (fn [[k v]]
|
||||
(when (and (keyword? k)
|
||||
(not= :db.cardinality/many (:db/cardinality v))
|
||||
(not= :db.cardinality/many (:db/cardinality (d/entity db k)))
|
||||
(or (get db-schema/schema k)
|
||||
(ldb/property? (d/entity db k))))
|
||||
k)) (:schema db))
|
||||
block-ids (map :e (d/datoms db :avet :block/uuid))]
|
||||
(->>
|
||||
(mapcat
|
||||
(fn [id]
|
||||
(mapcat (fn [attr]
|
||||
(let [datoms (d/datoms db :eavt id attr)]
|
||||
(when (> (count datoms) 1)
|
||||
(map (fn [datom]
|
||||
[:db/retract (:e datom) (:a datom) (:v datom)])
|
||||
(butlast datoms))))) attrs))
|
||||
block-ids)
|
||||
(remove nil?))))
|
||||
|
||||
(def ^:large-vars/cleanup-todo schema-version->updates
|
||||
"A vec of tuples defining datascript migrations. Each tuple consists of the
|
||||
schema version integer and a migration map. A migration map can have keys of :properties, :classes
|
||||
@@ -769,7 +792,8 @@
|
||||
["64.3" {:properties [:logseq.property/used-template :logseq.property/template-applied-to]
|
||||
:classes [:logseq.class/Template]}]
|
||||
["64.4" {:properties [:logseq.property/created-by-ref]}]
|
||||
["64.5" {:fix add-group-by-property-for-list-views}]])
|
||||
["64.5" {:fix add-group-by-property-for-list-views}]
|
||||
["64.6" {:fix cardinality-one-multiple-values}]])
|
||||
|
||||
(let [[major minor] (last (sort (map (comp (juxt :major :minor) db-schema/parse-schema-version first)
|
||||
schema-version->updates)))
|
||||
|
||||
@@ -731,9 +731,9 @@
|
||||
(worker-export/get-all-pages repo @conn)))
|
||||
|
||||
(def-thread-api :thread-api/export-get-all-page->content
|
||||
[repo]
|
||||
[repo options]
|
||||
(when-let [conn (worker-state/get-datascript-conn repo)]
|
||||
(worker-export/get-all-page->content repo @conn)))
|
||||
(worker-export/get-all-page->content repo @conn options)))
|
||||
|
||||
(def-thread-api :thread-api/undo
|
||||
[repo _page-block-uuid-str]
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
[logseq.db :as ldb]
|
||||
[logseq.db.sqlite.util :as sqlite-util]
|
||||
[logseq.graph-parser.property :as gp-property]
|
||||
[logseq.outliner.tree :as otree]))
|
||||
[logseq.outliner.tree :as otree]
|
||||
[logseq.db.sqlite.create-graph :as sqlite-create-graph]))
|
||||
|
||||
(defn- safe-keywordize
|
||||
[block]
|
||||
@@ -45,12 +46,18 @@
|
||||
(assoc page' :block/children children))))))
|
||||
|
||||
(defn get-all-page->content
|
||||
[repo db]
|
||||
(->> (d/datoms db :avet :block/name)
|
||||
(map (fn [d]
|
||||
(let [e (d/entity db (:e d))]
|
||||
[repo db options]
|
||||
(let [filter-fn (if (ldb/db-based-graph? db)
|
||||
(fn [ent]
|
||||
(or (not (:logseq.property/built-in? ent))
|
||||
(contains? sqlite-create-graph/built-in-pages-names (:block/title ent))))
|
||||
(constantly true))]
|
||||
(->> (d/datoms db :avet :block/name)
|
||||
(map #(d/entity db (:e %)))
|
||||
(filter filter-fn)
|
||||
(map (fn [e]
|
||||
[(:block/title e)
|
||||
(common-file/block->content repo db (:block/uuid e) {} {})])))))
|
||||
(common-file/block->content repo db (:block/uuid e) {} options)])))))
|
||||
|
||||
(defn get-debug-datoms
|
||||
[conn ^Object db]
|
||||
|
||||
Reference in New Issue
Block a user