From 066b1235a642fb3ae20eff791b8a1fa12d90670d Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 20 Jan 2025 23:15:33 +0100 Subject: [PATCH 1/2] :bug: Pass correct default options on db/plan fn --- backend/src/app/db.clj | 10 ++++------ backend/src/app/db/sql.clj | 9 +++++---- backend/src/app/rpc/commands/management.clj | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/backend/src/app/db.clj b/backend/src/app/db.clj index b22ecd899..128c3f44e 100644 --- a/backend/src/app/db.clj +++ b/backend/src/app/db.clj @@ -270,19 +270,17 @@ :else (throw (IllegalArgumentException. "unable to resolve connectable")))) (def ^:private params-mapping - {::return-keys? :return-keys - ::return-keys :return-keys}) + {::return-keys :return-keys}) (defn rename-opts [opts] (set/rename-keys opts params-mapping)) (def ^:private default-insert-opts - {:builder-fn sql/as-kebab-maps - :return-keys true}) + (assoc sql/default-opts :return-keys true)) (def ^:private default-opts - {:builder-fn sql/as-kebab-maps}) + sql/default-opts) (defn exec! ([ds sv] (exec! ds sv nil)) @@ -333,7 +331,7 @@ (defn update! "A helper that build an UPDATE SQL statement and executes it. - Given a connectable object, a table name, a hash map of columns and + Given a connectable object, a table name, a hash map of columns and values to set, and either a hash map of columns and values to search on or a vector of a SQL where clause and parameters, perform an update on the table. diff --git a/backend/src/app/db/sql.clj b/backend/src/app/db/sql.clj index 42641039e..beabb8861 100644 --- a/backend/src/app/db/sql.clj +++ b/backend/src/app/db/sql.clj @@ -15,14 +15,15 @@ (defn kebab-case [s] (str/replace s #"_" "-")) (defn snake-case [s] (str/replace s #"-" "_")) -(def default-opts - {:table-fn snake-case - :column-fn snake-case}) - (defn as-kebab-maps [rs opts] (jdbc-opt/as-unqualified-modified-maps rs (assoc opts :label-fn kebab-case))) +(def default-opts + {:table-fn snake-case + :column-fn snake-case + :builder-fn as-kebab-maps}) + (defn insert ([table key-map] (insert table key-map nil)) diff --git a/backend/src/app/rpc/commands/management.clj b/backend/src/app/rpc/commands/management.clj index cad94b019..16894f4e6 100644 --- a/backend/src/app/rpc/commands/management.clj +++ b/backend/src/app/rpc/commands/management.clj @@ -67,7 +67,7 @@ :is-owner true :is-admin true :can-edit true} - {::db/return-keys? false})) + {::db/return-keys false})) (doseq [params (sequence (comp (map #(bfc/remap-id % :file-id)) From da0704081faeb60125d36c9b660c5dae3796762b Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 20 Jan 2025 23:21:41 +0100 Subject: [PATCH 2/2] :paperclip: Normalize default opts for db/plan function --- backend/src/app/db.clj | 11 +++++++++-- backend/src/app/tasks/file_gc.clj | 10 ++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/backend/src/app/db.clj b/backend/src/app/db.clj index 128c3f44e..625fe872f 100644 --- a/backend/src/app/db.clj +++ b/backend/src/app/db.clj @@ -411,13 +411,20 @@ :hint "database object not found")) row)) +(def ^:private default-plan-opts + (-> default-opts + (assoc :fetch-size 1) + (assoc :concurrency :read-only) + (assoc :cursors :close) + (assoc :result-type :forward-only))) + (defn plan ([ds sql] (-> (get-connectable ds) - (jdbc/plan sql default-opts))) + (jdbc/plan sql default-plan-opts))) ([ds sql opts] (-> (get-connectable ds) - (jdbc/plan sql (merge default-opts opts))))) + (jdbc/plan sql (merge default-plan-opts opts))))) (defn cursor "Return a lazy seq of rows using server side cursors" diff --git a/backend/src/app/tasks/file_gc.clj b/backend/src/app/tasks/file_gc.clj index 7bbdfa07e..30f6c2f5a 100644 --- a/backend/src/app/tasks/file_gc.clj +++ b/backend/src/app/tasks/file_gc.clj @@ -56,12 +56,6 @@ (map :data) (mapcat bfc/collect-used-media))) -(def ^:private plan-opts - {:fetch-size 1 - :concurrency :read-only - :cursors :close - :result-type :forward-only}) - (defn- clean-file-media! "Performs the garbage collection of file media objects." [{:keys [::db/conn] :as cfg} {:keys [id] :as file}] @@ -69,7 +63,7 @@ (map (partial decode-file cfg)) xf:collect-used-media) - used (->> (db/plan conn [sql:get-snapshots id] plan-opts) + used (->> (db/plan conn [sql:get-snapshots id]) (transduce xform conj #{})) used (into used xf:collect-used-media [file]) @@ -175,7 +169,7 @@ (mapcat (partial get-used-components deleted-components file-id)) used-remote - (->> (db/plan conn [sql:get-files-for-library file-id] plan-opts) + (->> (db/plan conn [sql:get-files-for-library file-id]) (transduce (comp (map (partial decode-file cfg)) xform) conj #{})) used-local