outliner.cljs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. (ns frontend.db.outliner
  2. (:require [datascript.core :as d]
  3. [frontend.db :as db]
  4. [frontend.db.react :as react]
  5. [frontend.util :as util]
  6. [frontend.debug :as debug]
  7. [frontend.db.utils :as db-utils]))
  8. (defn get-by-id
  9. [conn id]
  10. (try
  11. (d/pull @conn '[*] id)
  12. (catch js/Error e nil)))
  13. (defn get-by-parent-&-left
  14. [conn parent-id left-id]
  15. (let [r (d/q '[:find (pull ?a [*])
  16. :in $ ?p ?l
  17. :where
  18. [?a :block/left ?l]
  19. [?a :block/parent ?p]]
  20. @conn parent-id left-id)]
  21. (ffirst r)))
  22. ;; key [:block/children parent-id]
  23. (def get-by-parent-id
  24. '[:find (pull ?a [*])
  25. :in $ ?id
  26. :where
  27. [?a :block/parent ?id]])
  28. (defn save-block
  29. [conn block-m]
  30. (let [tx (-> (dissoc block-m :block/children :block/dummy? :block/level :block/meta)
  31. (util/remove-nils))
  32. block-id (:block/uuid block-m)]
  33. (d/transact! conn [tx])
  34. (db-utils/pull [:block/uuid block-id])))
  35. (defn del-block
  36. [conn id-or-look-ref]
  37. (d/transact! conn [[:db.fn/retractEntity id-or-look-ref]]))
  38. (defn del-blocks
  39. [ids-or-look-refs]
  40. (mapv (fn [id-or-look-ref]
  41. [:db.fn/retractEntity id-or-look-ref])
  42. ids-or-look-refs))
  43. (defn get-journals
  44. [conn]
  45. (let [r (d/q '[:find (pull ?a [*])
  46. :where
  47. [?a :block/journal? true]]
  48. @conn)]
  49. (flatten r)))
  50. (defn remove-non-existed-refs!
  51. [refs]
  52. (filter db/entity refs))