Files
logseq/src/main/frontend/common/file_based/db.cljs
2025-02-20 12:37:13 -05:00

38 lines
1.4 KiB
Clojure

(ns frontend.common.file-based.db
"Database fns for file graphs that are used by worker and frontend"
(:require [clojure.string :as string]
[datascript.core :as d]
[logseq.common.util :as common-util]
[logseq.db.file-based.rules :as file-rules]))
(defn get-namespace-pages
"Accepts both sanitized and unsanitized namespaces"
[db namespace']
(assert (string? namespace'))
(let [namespace'' (common-util/page-name-sanity-lc namespace')
pull-attrs [:db/id :block/name :block/original-name :block/namespace
{:block/file [:db/id :file/path]}]]
(d/q
[:find [(list 'pull '?c pull-attrs) '...]
:in '$ '% '?namespace
:where
['?p :block/name '?namespace]
(list 'namespace '?p '?c)]
db
(:namespace file-rules/rules)
namespace'')))
(defn get-pages-by-name-partition
[db partition']
(when-not (string/blank? partition')
(let [partition'' (common-util/page-name-sanity-lc (string/trim partition'))
ids (->> (d/datoms db :aevt :block/name)
(filter (fn [datom]
(let [page (:v datom)]
(string/includes? page partition''))))
(map :e))]
(when (seq ids)
(d/pull-many db
'[:db/id :block/name :block/title]
ids)))))