feat(search): single database done

This commit is contained in:
Tienson Qin
2021-04-03 21:12:35 +08:00
parent 2d71389fe5
commit 2fdfd0dcb1
7 changed files with 109 additions and 49 deletions

View File

@@ -21,12 +21,16 @@
:uuid (str uuid)
:content result}))
(defn build-blocks-indice
[repo]
(->> (db/get-all-block-contents)
(map block->index)
(remove nil?)
(bean/->js)))
(defn make-blocks-indice!
[repo]
(let [blocks (->> (db/get-all-block-contents)
(map block->index)
(remove nil?)
(bean/->js))
(let [blocks (build-blocks-indice repo)
indice (fuse. blocks
(clj->js {:keys ["uuid" "content"]
:shouldSort true

View File

@@ -1,12 +1,26 @@
(ns frontend.search.node
(:require [frontend.search.protocol :as protocol]
[frontend.util :as util]))
;; sqlite3
[frontend.util :as util]
[electron.ipc :as ipc]
[cljs-bean.core :as bean]
[frontend.search.db :as search-db]
[frontend.db :as db]
[promesa.core :as p]))
(defrecord Node [repo]
protocol/Engine
(query [this q option])
(rebuild-blocks-indice! [this])
(transact-blocks! [this data])
(truncate-blocks! [this]))
(query [this q {:keys [limit]
:or {limit 20}}]
(p/let [result (ipc/ipc "search-blocks" repo q limit)
result (bean/->clj result)]
(map (fn [{:keys [content id uuid]}]
{:block/uuid uuid
:block/content content
:block/page (:block/page (db/entity id))}) result)))
(rebuild-blocks-indice! [this]
(let [indice (search-db/build-blocks-indice repo)]
(ipc/ipc "rebuild-blocks-indice" repo indice)))
(transact-blocks! [this data]
(ipc/ipc "transact-blocks" repo (bean/->js data)))
(truncate-blocks! [this]
(ipc/ipc "truncate-blocks" repo)))