(ns scratchpad "A place for experiments" (:require [datomic.api :as d])) (defn connect-to [db-uri] (d/create-database db-uri) (d/connect db-uri)) (def conn (connect-to "datomic:free://localhost:4334/scratchpad")) (defn db [] (d/db conn)) (d/transact conn [{:db/id (d/tempid :db.part/db) :db/ident :person/name :db/valueType :db.type/string :db/cardinality :db.cardinality/one :db.install/_attribute :db.part/db}]) (def nums [1 2 3 4 5 6]) (def fancy-nums (atom [42])) (def immutable-nums (deref fancy-nums)) immutable-nums (swap! fancy-nums conj 3.145) @fancy-nums (d/transact conn [{:db/id (d/tempid :db.part/user) :person/name "Tom"}]) (d/q '[:find ?e :where [?e :person/name "Tom"]] (db)) (d/transact conn [{:db/id (d/tempid :db.part/db) :db/ident :place/name :db/valueType :db.type/string :db/cardinality :db.cardinality/one :db.install/_attribute :db.part/db}]) (def db1 (db)) db1 (d/touch (d/entity (db) 17592186045418)) (d/transact conn [{:db/id 17592186045418 :place/name "Leipzig"}]) (d/q '[:find ?e1 ?e2 ?name ?place :where [?e1 :person/name ?name] [?e2 :place/name ?place]] (db)) (d/transact conn [{:db/id (d/tempid :db.part/user) :person/name "Paul" :place/name "Paris"}]) (d/transact conn [{:db/id 17592186045418 :person/name "Klaus"}]) (d/q '[:find ?old-name ?new-name :where [?e :person/name ?old-name ?t1] [?e :person/name ?new-name ?t2] [(not= ?old-name ?new-name)] [(< ?t1 ?t2)]] (d/history (db))) (d/q '[:find ?e ?a ?v :where [?e ?a ?v]] (db))