remotes/origin/cnrpman-page-level-fts
Junyi Du 2022-10-28 16:28:34 +08:00 committed by Tienson Qin
parent 4c11e451ea
commit 2a4e557b38
3 changed files with 17 additions and 13 deletions

View File

@ -181,7 +181,7 @@
(defn delete-pages!
[repo ids]
(when-let [db (get-db repo)]
(let [sql (str "DELETE from blocks WHERE id IN " (clj-list->sql ids))
(let [sql (str "DELETE from pages WHERE id IN " (clj-list->sql ids))
stmt (prepare db sql)]
(.run ^object stmt))))

View File

@ -16,7 +16,8 @@
[frontend.util.property :as property]
[goog.object :as gobj]
[promesa.core :as p]
[clojure.set :as set]))
[clojure.set :as set]
[frontend.modules.datascript-report.core :as db-report]))
(defn get-engine
[repo]
@ -111,7 +112,7 @@
(protocol/transact-blocks! engine data)))
(defn- transact-pages!
[repo data]
[repo data]
(when-let [engine (get-engine repo)]
(protocol/transact-pages! engine data)))
@ -268,11 +269,11 @@
(map :db/id)
set))
(defn- verify-pull
"Confirm that the page id & name of a page entity are up-to-date
Return a full page entity"
[page-id]
(when-let [page-entity (db/entity page-id)]
(defn- pull-page
"Return a page entity of the latest state from tx-report"
[tx-report page-id]
(when-let [page-entity (db-report/safe-pull (:db-after tx-report) '[:db/id :block/name :block/uuid
{:block/file [:db/id :file/content]}] page-id)]
(when (:block/name page-entity) ;; confirm it's a page entity
page-entity)))
@ -306,7 +307,7 @@
;; update page indice
(when (or (seq pages-to-add-id-set) (seq pages-to-remove-id-set) (seq updated-pages-id-set)) ;; when move op happens, no :block/content provided
(let [pages-to-add-id-set (set/union updated-pages-id-set pages-to-add-id-set)
verified-pages (map verify-pull pages-to-add-id-set)
verified-pages (map (partial pull-page tx-report) pages-to-add-id-set)
indice-pages (map #(when % (search-db/page->index %)) verified-pages)
invalid-set (->> (map (fn [updated indiced] ;; get id of pages without valid page index
(if indiced nil (:db/id updated)))

View File

@ -4,7 +4,8 @@
[frontend.db :as db]
[frontend.state :as state]
[frontend.util :as util]
["fuse.js" :as fuse]))
["fuse.js" :as fuse]
[frontend.db.utils :as db-util]))
;; Notice: When breaking changes happen, bump version in src/electron/electron/search.cljs
@ -30,12 +31,13 @@
(defn page->index
"Convert a page name to the index for searching (page content level)
Generate index based on the DB content AT THE POINT OF TIME"
[{:block/keys [uuid name file] :as page}]
(when-let [content (:file/content file)]
[{:block/keys [uuid _name] :as page}]
(when-let [content (some-> (:block/file page)
(:file/content))]
(prn "content: " content)
(when-not (> (count content) (* (max-len) 10))
{:id (:db/id page)
:uuid (str uuid)
:name name
:content (sanitize content)})))
(defn build-blocks-indice
@ -50,6 +52,7 @@
(defn build-pages-indice
[repo]
(->> (db/get-all-pages repo)
(map #(db/entity (:db/id %))) ;; get full file-content
(map page->index)
(remove nil?)
(bean/->js)))