|
|
@@ -190,44 +190,30 @@
|
|
|
:db-schema-version (str version-in-db)}}))))
|
|
|
missing-addresses))
|
|
|
|
|
|
-(def get-to-delete-unused-addresses-sql
|
|
|
- "WITH to_delete(addr) AS (
|
|
|
- SELECT value
|
|
|
- FROM json_each(?)
|
|
|
- ),
|
|
|
- referenced(addr) AS (
|
|
|
- SELECT json_each.value
|
|
|
- FROM kvs
|
|
|
- JOIN json_each(kvs.addresses)
|
|
|
- WHERE kvs.addr NOT IN (SELECT addr FROM to_delete)
|
|
|
- AND json_each.value IN (SELECT addr FROM to_delete)
|
|
|
- )
|
|
|
- SELECT addr FROM to_delete
|
|
|
- WHERE addr NOT IN (SELECT addr FROM referenced)")
|
|
|
-
|
|
|
(defn upsert-addr-content!
|
|
|
"Upsert addr+data-seq. Update sqlite-cli/upsert-addr-content! when making changes"
|
|
|
[db data delete-addrs*]
|
|
|
- (let [delete-addrs (clojure.set/difference (set delete-addrs*) #{0 1})]
|
|
|
+ (let [_delete-addrs (clojure.set/difference (set delete-addrs*) #{0 1})]
|
|
|
(assert (some? db) "sqlite db not exists")
|
|
|
(.transaction db (fn [tx]
|
|
|
(doseq [item data]
|
|
|
(.exec tx #js {:sql "INSERT INTO kvs (addr, content, addresses) values ($addr, $content, $addresses) on conflict(addr) do update set content = $content, addresses = $addresses"
|
|
|
:bind item}))))
|
|
|
- (when (seq delete-addrs)
|
|
|
- (let [result (.exec db #js {:sql get-to-delete-unused-addresses-sql
|
|
|
- :bind (js/JSON.stringify (clj->js delete-addrs))
|
|
|
- :rowMode "array"})
|
|
|
- non-refed-addrs (map #(aget % 0) result)]
|
|
|
- (when (seq non-refed-addrs)
|
|
|
- (.transaction db (fn [tx]
|
|
|
- (doseq [addr non-refed-addrs]
|
|
|
- (.exec tx #js {:sql "Delete from kvs where addr = ?"
|
|
|
- :bind #js [addr]}))))))
|
|
|
- (let [missing-addrs (when worker-util/dev?
|
|
|
- (seq (find-missing-addresses nil db {:delete-addrs delete-addrs})))]
|
|
|
- (when (seq missing-addrs)
|
|
|
- (worker-util/post-message :notification [(str "Bug!! Missing addresses: " missing-addrs) :error false]))))))
|
|
|
+ ;; (when (seq delete-addrs)
|
|
|
+ ;; (let [result (.exec db #js {:sql get-to-delete-unused-addresses-sql
|
|
|
+ ;; :bind (js/JSON.stringify (clj->js delete-addrs))
|
|
|
+ ;; :rowMode "array"})
|
|
|
+ ;; non-refed-addrs (map #(aget % 0) result)]
|
|
|
+ ;; (when (seq non-refed-addrs)
|
|
|
+ ;; (.transaction db (fn [tx]
|
|
|
+ ;; (doseq [addr non-refed-addrs]
|
|
|
+ ;; (.exec tx #js {:sql "Delete from kvs where addr = ?"
|
|
|
+ ;; :bind #js [addr]})))))
|
|
|
+ ;; (let [missing-addrs (when worker-util/dev?
|
|
|
+ ;; (seq (find-missing-addresses nil db {:delete-addrs non-refed-addrs})))]
|
|
|
+ ;; (when (seq missing-addrs)
|
|
|
+ ;; (worker-util/post-message :notification [(str "Bug!! Missing addresses: " missing-addrs) :error false])))))
|
|
|
+ ))
|
|
|
|
|
|
(defn restore-data-from-addr
|
|
|
"Update sqlite-cli/restore-data-from-addr when making changes"
|
|
|
@@ -849,11 +835,11 @@
|
|
|
[repo start-opts]
|
|
|
(js/Promise.
|
|
|
(m/sp
|
|
|
- (c.m/<? (init-sqlite-module!))
|
|
|
- (when-not (:import-type start-opts)
|
|
|
- (c.m/<? (start-db! repo start-opts))
|
|
|
- (assert (some? (worker-state/get-datascript-conn repo))))
|
|
|
- (m/? (rtc.core/new-task--rtc-start true)))))
|
|
|
+ (c.m/<? (init-sqlite-module!))
|
|
|
+ (when-not (:import-type start-opts)
|
|
|
+ (c.m/<? (start-db! repo start-opts))
|
|
|
+ (assert (some? (worker-state/get-datascript-conn repo))))
|
|
|
+ (m/? (rtc.core/new-task--rtc-start true)))))
|
|
|
|
|
|
(def broadcast-data-types
|
|
|
(set (map
|