From 93add0ccb6c222e9eabb8c1ba411de8e3b479114 Mon Sep 17 00:00:00 2001 From: Nikita Prokopov Date: Sat, 3 May 2014 03:29:00 +0700 Subject: [PATCH] Schema keywords namespaced on a par with Datomic schema --- CHANGELOG.md | 1 + README.md | 6 +++--- src/datascript.cljs | 4 ++-- test/js/js.html | 10 ++++++---- test/test/datascript.cljs | 16 ++++++++-------- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 220fda5a..cace16f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Transactor functions via `:db.fn/call` - Vanilla JS API bindings +- Schema keywords namespaced on a par with Datomic schema # 0.1.3 diff --git a/README.md b/README.md index 757663d8..233f0bae 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Also check out this blog post about [how DataScript fits into the current webdev ;; Implicit join, multi-valued attribute -(let [schema {:aka {:cardinality :many}} +(let [schema {:aka {:db/cardinality :db.cardinality/many}} conn (d/create-conn schema)] (d/transact! conn [ { :db/id -1 :name "Maksim" @@ -124,7 +124,7 @@ The following features are supported: * Database as a value: each DB is an immutable value. New DBs are created on top of old ones, but old ones stay perfectly valid too * Triple store model * EA and AV indexes -* Multi-valued attributes via `:cardinality :many` +* Multi-valued attributes via `:db/cardinality :db.cardinality/many` * Database “mutations” via `transact!` * Callback-based analogue to txReportQueue via `listen!` @@ -162,7 +162,7 @@ Expected soon: * DataScript is built totally from scratch and is not related by any means to the popular Clojure database Datomic * Runs in a browser * Simplified schema, not queryable -* No need to declare attributes except for `:cardinality` `:many` +* No need to declare attributes except for `:db/cardinality` `:db.cardinality/many` * Any value can be used as entity id, attribute or value. It’s better if they are immutable and fast to compare * No `db/ident` attributes, keywords are _literally_ attribute values, no integer id behind them * AV index for all datoms diff --git a/src/datascript.cljs b/src/datascript.cljs index 30c49161..3c543548 100644 --- a/src/datascript.cljs +++ b/src/datascript.cljs @@ -43,7 +43,7 @@ (defrecord TxReport [db-before db-after tx-data tempids]) (defn multival? [db attr] - (= (get-in db [:schema attr :cardinality]) :many)) + (= (get-in db [:schema attr :db/cardinality]) :db.cardinality/many)) (defn- match-tuple [tuple pattern] (every? true? @@ -94,7 +94,7 @@ (let [tx (inc (.-max-tx db))] (case op :db/add - (if (= :many (get-in db [:schema a :cardinality])) + (if (= :db.cardinality/many (get-in db [:schema a :db/cardinality])) (when (empty? (-search db [e a v])) [(->Datom e a v tx true)]) (if-let [old-datom (first (-search db [e a]))] diff --git a/test/js/js.html b/test/js/js.html index 29e330a7..ed852bae 100644 --- a/test/js/js.html +++ b/test/js/js.html @@ -54,10 +54,12 @@ - + + +