浏览代码

add bb task: validate sqlite data

rcmerci 2 年之前
父节点
当前提交
20618afaa7
共有 2 个文件被更改,包括 37 次插入1 次删除
  1. 5 1
      bb.edn
  2. 32 0
      scripts/src/logseq/tasks/validate_sqlite_data.clj

+ 5 - 1
bb.edn

@@ -12,7 +12,8 @@
   {:mvn/version "1.4.100"}}
  :pods
  {clj-kondo/clj-kondo {:version "2022.10.05"}
-  org.babashka/fswatcher {:version "0.0.3"}}
+  org.babashka/fswatcher {:version "0.0.3"}
+  org.babashka/go-sqlite3 {:version "0.1.0"}}
  :tasks
  {dev:desktop-watch
   logseq.tasks.dev.desktop/watch
@@ -88,6 +89,9 @@
   dev:gen-malli-kondo-config
   logseq.tasks.dev/gen-malli-kondo-config
 
+  dev:validate-sqlite-data
+  logseq.tasks.validate-sqlite-data/-main
+
   lint:large-vars
   logseq.bb-tasks.lint.large-vars/-main
 

+ 32 - 0
scripts/src/logseq/tasks/validate_sqlite_data.clj

@@ -0,0 +1,32 @@
+(ns logseq.tasks.validate-sqlite-data
+  (:require [pod.babashka.go-sqlite3 :as sqlite]
+            [babashka.fs :as fs]))
+
+(defn get-all-normal-blocks
+  [db-path]
+  (sqlite/query db-path "select * from blocks where type = 1"))
+
+
+(defn get-all-page-blocks
+  [db-path]
+  (sqlite/query db-path "select * from blocks where type = 2"))
+
+
+
+(defn all-normal-blocks-have-page-uuid
+  [all-page-blocks all-normal-blocks]
+  (let [page-block-uuids (set (mapv :uuid all-page-blocks))]
+    (loop [[b & others] all-normal-blocks]
+      (when b
+        (assert (and (:uuid b) (contains? page-block-uuids (:page_uuid b))) b)
+        (recur others)))))
+
+(defn -main
+  [& args]
+  (prn args)
+  (let [db-graph-name (first args)
+        db-path (str (fs/path (fs/home) "logseq" "graphs" db-graph-name))]
+    (assert (fs/exists? db-path) db-path)
+    (let [all-page-blocks (get-all-page-blocks db-path)
+          all-normal-blocks (get-all-normal-blocks db-path)]
+      (all-normal-blocks-have-page-uuid all-page-blocks all-normal-blocks))))