diff --git a/deps/db-sync/src/logseq/db_sync/common.cljs b/deps/db-sync/src/logseq/db_sync/common.cljs index e86bc72e05..e3abf9feb5 100644 --- a/deps/db-sync/src/logseq/db_sync/common.cljs +++ b/deps/db-sync/src/logseq/db_sync/common.cljs @@ -66,15 +66,20 @@ stmt)] (.run stmt))) +(defn- with-session-db [^js db session-mode] + (let [with-session (.-withSession db)] + (if (fn? with-session) + (if (some? session-mode) + (.withSession db session-mode) + (.withSession db)) + db))) + (defn (.-size auth-cache) auth-cache-max-entries) - (let [keys-iter (.keys auth-cache) - first-key (.next keys-iter)] - (when-not (.-done first-key) - (.delete auth-cache (.-value first-key)))))) - -(defn- cached-claims [token] - (let [entry (.get auth-cache token)] - (when entry - (let [exp (aget entry "exp") - now (now-seconds)] - (if (and (number? exp) (<= exp (+ now auth-exp-skew-seconds))) - (do - (.delete auth-cache token) - nil) - (aget entry "claims")))))) - -(defn- cache-claims! [token claims] - (let [exp (aget claims "exp")] - (when (and (string? token) (number? exp)) - (.set auth-cache token #js {"claims" claims "exp" exp}) - (evict-auth-cache!)))) - (defn- bearer-token [auth-header] (when (and (string? auth-header) (string/starts-with? auth-header "Bearer ")) (subs auth-header 7))) @@ -64,12 +33,5 @@ (defn auth-claims [request env] (let [token (token-from-request request)] (if (string? token) - (if-let [claims (cached-claims token)] - (js/Promise.resolve claims) - (-> (authorization/verify-jwt token env) - (.then (fn [claims] - (when claims - (cache-claims! token claims)) - claims)) - (.catch (fn [_] nil)))) + (authorization/verify-jwt token env) (js/Promise.resolve nil)))) diff --git a/deps/db-sync/test/logseq/db_sync/common_test.cljs b/deps/db-sync/test/logseq/db_sync/common_test.cljs new file mode 100644 index 0000000000..1b1a91992b --- /dev/null +++ b/deps/db-sync/test/logseq/db_sync/common_test.cljs @@ -0,0 +1,91 @@ +(ns logseq.db-sync.common-test + (:require [cljs.test :refer [async deftest is]] + [logseq.db-sync.common :as common] + [promesa.core :as p])) + +(defn- make-stmt [calls result] + (let [stmt (js-obj)] + (aset stmt + "bind" + (fn [& args] + (swap! calls assoc :bind-args (vec args)) + stmt)) + (aset stmt + "all" + (fn [] + (swap! calls update :all-count (fnil inc 0)) + result)) + stmt)) + +(deftest d1-all-falls-back-when-with-session-missing-test + (async done + (let [calls (atom {}) + result #js {:results #js [#js {"id" "u1"}]} + stmt (make-stmt calls result) + db #js {:prepare (fn [sql] + (swap! calls assoc :prepare-sql sql) + stmt)}] + (-> (p/let [query-result (common/ (p/let [query-result (common/ (p/let [query-result (common/