Take more general raise
from DataScript.
This commit is contained in:
parent
2a31a0c4d4
commit
13dc1cc9b6
5 changed files with 27 additions and 17 deletions
|
@ -4,7 +4,7 @@
|
|||
|
||||
(ns datomish.query
|
||||
(:require
|
||||
[datomish.util :as util :refer [raise var->sql-var]]
|
||||
[datomish.util :as util #?(:cljs :refer-macros :clj :refer) [raise cond-let]]
|
||||
[datomish.transforms :as transforms]
|
||||
[datascript.parser :as dp
|
||||
#?@(:cljs [:refer [Pattern DefaultSrc Variable Constant Placeholder]])]
|
||||
|
@ -157,7 +157,7 @@
|
|||
(raise "Unable to :find non-variables."))
|
||||
(map (fn [elem]
|
||||
(let [var (:symbol elem)]
|
||||
[(lookup-variable context var) (var->sql-var var)]))
|
||||
[(lookup-variable context var) (util/var->sql-var var)]))
|
||||
elements)))
|
||||
|
||||
(defn row-pair-transducer [context projection]
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
[datomish.pair-chan :refer [go-pair <?]]
|
||||
[cljs.core.async.macros :refer [go]]))
|
||||
(:require
|
||||
[datomish.util :as util :refer [raise]]
|
||||
[datomish.util :as util #?(:cljs :refer-macros :clj :refer) [raise cond-let]]
|
||||
[datomish.sqlite :as s]
|
||||
#?@(:clj [[datomish.pair-chan :refer [go-pair <?]]
|
||||
[clojure.core.async :refer [go <! >!]]])
|
||||
|
@ -42,7 +42,7 @@
|
|||
{:pre [(> from-version 0)]} ;; Or we'd create-current-version instead.
|
||||
{:pre [(< from-version current-version)]} ;; Or we wouldn't need to update-from-version.
|
||||
(go-pair
|
||||
(raise "No migrations yet defioned!")
|
||||
(raise "No migrations yet defined!")
|
||||
(<? (s/set-user-version db current-version))
|
||||
(<? (s/get-user-version db))))
|
||||
|
||||
|
|
|
@ -3,12 +3,22 @@
|
|||
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
(ns datomish.util
|
||||
#?(:cljs (:require-macros datomish.util))
|
||||
(:require
|
||||
[clojure.string :as str]))
|
||||
[clojure.string :as str]))
|
||||
|
||||
(defn raise [s]
|
||||
#?(:clj (throw (Exception. s)))
|
||||
#?(:cljs (throw (js/Error s))))
|
||||
#?(:clj
|
||||
(defmacro raise [& fragments]
|
||||
(let [msgs (butlast fragments)
|
||||
data (last fragments)]
|
||||
`(throw (ex-info (str ~@(map (fn [m#] (if (string? m#) m# (list 'pr-str m#))) msgs)) ~data)))))
|
||||
|
||||
#?(:clj
|
||||
(defmacro cond-let [& clauses]
|
||||
(when-let [[test expr & rest] clauses]
|
||||
`(~(if (vector? test) 'if-let 'if) ~test
|
||||
~expr
|
||||
(cond-let ~@rest)))))
|
||||
|
||||
(defn var->sql-var
|
||||
"Turns '?xyz into :xyz."
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
[datomish.node-tempfile-macros :refer [with-tempfile]]
|
||||
[cljs.core.async.macros :as a :refer [go]]))
|
||||
(:require
|
||||
[datomish.util :as util :refer [raise]]
|
||||
[datomish.util :as util #?(:cljs :refer-macros :clj :refer) [raise cond-let]]
|
||||
[datomish.sqlite :as s]
|
||||
#?@(:clj [[datomish.pair-chan :refer [go-pair <?]]
|
||||
[tempfile.core :refer [tempfile with-tempfile]]
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
(is (= :XX (util/var->sql-var '?XX))))
|
||||
|
||||
#?(:cljs
|
||||
(deftest test-raise
|
||||
(let [caught
|
||||
(try
|
||||
(do
|
||||
(util/raise "succeed")
|
||||
"fail")
|
||||
(catch :default e e))]
|
||||
(is (= "succeed" (aget caught "message"))))))
|
||||
(deftest test-raise
|
||||
(let [caught
|
||||
(try
|
||||
(do
|
||||
(util/raise "succeed")
|
||||
"fail")
|
||||
(catch :default e e))]
|
||||
(is (= "succeed" (aget caught "data"))))))
|
||||
|
|
Loading…
Reference in a new issue