From c2859c5e182a6d3a1603ab8fb9a4e806b50e6321 Mon Sep 17 00:00:00 2001 From: Stan Verberkt <2913270+verberktstan@users.noreply.github.com> Date: Tue, 9 Jun 2026 05:36:58 +0200 Subject: [PATCH 1/2] Ensure entity to be uuid for inserted items --- src/bitten/db.clj | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bitten/db.clj b/src/bitten/db.clj index ce0f26b..c549a2e 100644 --- a/src/bitten/db.clj +++ b/src/bitten/db.clj @@ -51,6 +51,9 @@ (def changed-and-retracted (juxt :changed :retracted)) +(defn- ensure-entity [{:db/keys [entity] :as record}] + (cond-> record (not entity) (assoc :db/entity (str (random-uuid)))) + (defn upsert! "Writes only changed facts from records to backend. Returns tx-id or nil. (upsert! db [{:db/entity \"user/1\" :name \"Alice\"}]) @@ -58,7 +61,8 @@ :retract removes them." ([backend records] (upsert! backend records nil)) ([backend records {:keys [missing-keys] :or {missing-keys :ignore}}] - (let [entities (into #{} (map :db/entity records)) + (let [records (map ensure-entity records) + entities (into #{} (map :db/entity records)) current-idx (->> {:entities entities} (query backend) index-by-entity) facts (for [{:db/keys [entity] :as record} records :let [existing (get current-idx entity {}) From 33b9e1b4af505250c0425c195172015a06edd335 Mon Sep 17 00:00:00 2001 From: Stan Verberkt <2913270+verberktstan@users.noreply.github.com> Date: Tue, 9 Jun 2026 05:40:19 +0200 Subject: [PATCH 2/2] Fix delimiting paren --- src/bitten/db.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bitten/db.clj b/src/bitten/db.clj index c549a2e..57ee384 100644 --- a/src/bitten/db.clj +++ b/src/bitten/db.clj @@ -52,7 +52,7 @@ (def changed-and-retracted (juxt :changed :retracted)) (defn- ensure-entity [{:db/keys [entity] :as record}] - (cond-> record (not entity) (assoc :db/entity (str (random-uuid)))) + (cond-> record (not entity) (assoc :db/entity (str (random-uuid))))) (defn upsert! "Writes only changed facts from records to backend. Returns tx-id or nil.