From 56d030a866d63e2cd4b4a794681ce1f849bf3ef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Str=C3=B6mberg?= Date: Tue, 8 Oct 2024 17:25:56 +0200 Subject: [PATCH 1/3] Ignore some Calva and nrepl files --- .gitignore | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6877e88..6dfec88 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,12 @@ pom.xml *~ libpeerconnection.log .clj-kondo -.lein-repl-history \ No newline at end of file +.lein-repl-history + +.nrepl-* +.cpcache/ +.DS_Store +.calva/output-window +.calva/repl.calva-repl +.lsp/.cache +.clj-kondo/.cache From 7c13c9c84cbcecda9858b1c4ff67963c6ac217d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Str=C3=B6mberg?= Date: Tue, 8 Oct 2024 17:26:26 +0200 Subject: [PATCH 2/3] Use latest Clojure, enabling cider-nrepl --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index 4923b32..6ce0e97 100644 --- a/project.clj +++ b/project.clj @@ -1,7 +1,7 @@ (defproject learndatalogtoday "0.1.0" :description "Interactive Datalog Tutorial" :url "http://learndatalogtoday.org" - :dependencies [[org.clojure/clojure "1.8.0"] + :dependencies [[org.clojure/clojure "1.12.0"] [org.clojure/clojurescript "1.9.227"] [compojure "1.5.1"] [ring/ring-jetty-adapter "1.5.0"] From 026a78c3b1d5dafcfae1c912be5bd8cfb625282c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Str=C3=B6mberg?= Date: Tue, 8 Oct 2024 17:28:41 +0200 Subject: [PATCH 3/3] Use Datom Local instead of Datomic Free --- project.clj | 2 +- resources/db/data.edn | 330 +++++++++++++------------- resources/db/schema.edn | 13 +- src/clj/learndatalogtoday/handler.clj | 16 +- 4 files changed, 177 insertions(+), 184 deletions(-) diff --git a/project.clj b/project.clj index 6ce0e97..ae9bd8f 100644 --- a/project.clj +++ b/project.clj @@ -5,7 +5,7 @@ [org.clojure/clojurescript "1.9.227"] [compojure "1.5.1"] [ring/ring-jetty-adapter "1.5.0"] - [com.datomic/datomic-free "0.9.5394"] + [com.datomic/local "1.0.285"] [datomic-query-helpers "0.1.1"] [hiccup "1.0.5"] [markdown-clj "0.9.89"] diff --git a/resources/db/data.edn b/resources/db/data.edn index cc4c2a3..4f1f3ad 100644 --- a/resources/db/data.edn +++ b/resources/db/data.edn @@ -1,376 +1,376 @@ [ - {:db/id #db/id [:db.part/user -100] + {:db/id "-100" :person/name "James Cameron" :person/born #inst "1954-08-16"} - {:db/id #db/id [:db.part/user -101] + {:db/id "-101" :person/name "Arnold Schwarzenegger" :person/born #inst "1947-07-30"} - {:db/id #db/id [:db.part/user -102] + {:db/id "-102" :person/name "Linda Hamilton" :person/born #inst "1956-09-26"} - {:db/id #db/id [:db.part/user -103] + {:db/id "-103" :person/name "Michael Biehn" :person/born #inst "1956-07-31"} - {:db/id #db/id [:db.part/user -104] + {:db/id "-104" :person/name "Ted Kotcheff" :person/born #inst "1931-04-07"} - - {:db/id #db/id [:db.part/user -105] + + {:db/id "-105" :person/name "Sylvester Stallone" :person/born #inst "1946-07-06"} - - {:db/id #db/id [:db.part/user -106] + + {:db/id "-106" :person/name "Richard Crenna" :person/born #inst "1926-11-30" :person/death #inst "2003-01-17"} - - {:db/id #db/id [:db.part/user -107] + + {:db/id "-107" :person/name "Brian Dennehy" :person/born #inst "1938-07-09"} - {:db/id #db/id [:db.part/user -108] + {:db/id "-108" :person/name "John McTiernan" :person/born #inst "1951-01-08"} - - {:db/id #db/id [:db.part/user -109] + + {:db/id "-109" :person/name "Elpidia Carrillo" :person/born #inst "1961-08-16"} - {:db/id #db/id [:db.part/user -110] + {:db/id "-110" :person/name "Carl Weathers" :person/born #inst "1948-01-14"} - {:db/id #db/id [:db.part/user -111] + {:db/id "-111" :person/name "Richard Donner" :person/born #inst "1930-04-24"} - {:db/id #db/id [:db.part/user -112] + {:db/id "-112" :person/name "Mel Gibson" :person/born #inst "1956-01-03"} - {:db/id #db/id [:db.part/user -113] + {:db/id "-113" :person/name "Danny Glover" :person/born #inst "1946-07-22"} - {:db/id #db/id [:db.part/user -114] + {:db/id "-114" :person/name "Gary Busey" :person/born #inst "1944-07-29"} - {:db/id #db/id [:db.part/user -115] + {:db/id "-115" :person/name "Paul Verhoeven" :person/born #inst "1938-07-18"} - {:db/id #db/id [:db.part/user -116] + {:db/id "-116" :person/name "Peter Weller" :person/born #inst "1947-06-24"} - {:db/id #db/id [:db.part/user -117] + {:db/id "-117" :person/name "Nancy Allen" :person/born #inst "1950-06-24"} - {:db/id #db/id [:db.part/user -118] + {:db/id "-118" :person/name "Ronny Cox" :person/born #inst "1938-07-23"} - {:db/id #db/id [:db.part/user -119] + {:db/id "-119" :person/name "Mark L. Lester" :person/born #inst "1946-11-26"} - {:db/id #db/id [:db.part/user -120] + {:db/id "-120" :person/name "Rae Dawn Chong" :person/born #inst "1961-02-28"} - {:db/id #db/id [:db.part/user -121] + {:db/id "-121" :person/name "Alyssa Milano" :person/born #inst "1972-12-19"} - {:db/id #db/id [:db.part/user -122] + {:db/id "-122" :person/name "Bruce Willis" :person/born #inst "1955-03-19"} - {:db/id #db/id [:db.part/user -123] + {:db/id "-123" :person/name "Alan Rickman" :person/born #inst "1946-02-21"} - {:db/id #db/id [:db.part/user -124] + {:db/id "-124" :person/name "Alexander Godunov" :person/born #inst "1949-11-28" :person/death #inst "1995-05-18"} - {:db/id #db/id [:db.part/user -125] + {:db/id "-125" :person/name "Robert Patrick" :person/born #inst "1958-11-05"} - {:db/id #db/id [:db.part/user -126] + {:db/id "-126" :person/name "Edward Furlong" :person/born #inst "1977-08-02"} - {:db/id #db/id [:db.part/user -127] + {:db/id "-127" :person/name "Jonathan Mostow" :person/born #inst "1961-11-28"} - {:db/id #db/id [:db.part/user -128] + {:db/id "-128" :person/name "Nick Stahl" :person/born #inst "1979-12-05"} - {:db/id #db/id [:db.part/user -129] + {:db/id "-129" :person/name "Claire Danes" :person/born #inst "1979-04-12"} - {:db/id #db/id [:db.part/user -130] + {:db/id "-130" :person/name "George P. Cosmatos" :person/born #inst "1941-01-04" :person/death #inst "2005-04-19"} - {:db/id #db/id [:db.part/user -131] + {:db/id "-131" :person/name "Charles Napier" :person/born #inst "1936-04-12" :person/death #inst "2011-10-05"} - {:db/id #db/id [:db.part/user -132] + {:db/id "-132" :person/name "Peter MacDonald"} - {:db/id #db/id [:db.part/user -133] + {:db/id "-133" :person/name "Marc de Jonge" :person/born #inst "1949-02-16" :person/death #inst "1996-06-06"} - {:db/id #db/id [:db.part/user -134] + {:db/id "-134" :person/name "Stephen Hopkins"} - {:db/id #db/id [:db.part/user -135] + {:db/id "-135" :person/name "Ruben Blades" :person/born #inst "1948-07-16"} - {:db/id #db/id [:db.part/user -136] + {:db/id "-136" :person/name "Joe Pesci" :person/born #inst "1943-02-09"} - {:db/id #db/id [:db.part/user -137] + {:db/id "-137" :person/name "Ridley Scott" :person/born #inst "1937-11-30"} - {:db/id #db/id [:db.part/user -138] + {:db/id "-138" :person/name "Tom Skerritt" :person/born #inst "1933-08-25"} - {:db/id #db/id [:db.part/user -139] + {:db/id "-139" :person/name "Sigourney Weaver" :person/born #inst "1949-10-08"} - {:db/id #db/id [:db.part/user -140] + {:db/id "-140" :person/name "Veronica Cartwright" :person/born #inst "1949-04-20"} - {:db/id #db/id [:db.part/user -141] + {:db/id "-141" :person/name "Carrie Henn"} - {:db/id #db/id [:db.part/user -142] + {:db/id "-142" :person/name "George Miller" :person/born #inst "1945-03-03"} - {:db/id #db/id [:db.part/user -143] + {:db/id "-143" :person/name "Steve Bisley" :person/born #inst "1951-12-26"} - {:db/id #db/id [:db.part/user -144] + {:db/id "-144" :person/name "Joanne Samuel"} - {:db/id #db/id [:db.part/user -145] + {:db/id "-145" :person/name "Michael Preston" :person/born #inst "1938-05-14"} - {:db/id #db/id [:db.part/user -146] + {:db/id "-146" :person/name "Bruce Spence" :person/born #inst "1945-09-17"} - {:db/id #db/id [:db.part/user -147] + {:db/id "-147" :person/name "George Ogilvie" :person/born #inst "1931-03-05"} - {:db/id #db/id [:db.part/user -148] + {:db/id "-148" :person/name "Tina Turner" :person/born #inst "1939-11-26"} - {:db/id #db/id [:db.part/user -149] + {:db/id "-149" :person/name "Sophie Marceau" :person/born #inst "1966-11-17"} - {:db/id #db/id [:db.part/user -200] + {:db/id "-200" :movie/title "The Terminator" :movie/year 1984 - :movie/director #db/id [:db.part/user -100] - :movie/cast [#db/id [:db.part/user -101] - #db/id [:db.part/user -102] - #db/id [:db.part/user -103]] - :movie/sequel #db/id [:db.part/user -207]} + :movie/director "-100" + :movie/cast ["-101" + "-102" + "-103"] + :movie/sequel "-207"} - {:db/id #db/id [:db.part/user -201] + {:db/id "-201" :movie/title "First Blood" :movie/year 1982 - :movie/director #db/id [:db.part/user -104] - :movie/cast [#db/id [:db.part/user -105] - #db/id [:db.part/user -106] - #db/id [:db.part/user -107]] - :movie/sequel #db/id [:db.part/user -209]} + :movie/director "-104" + :movie/cast ["-105" + "-106" + "-107"] + :movie/sequel "-209"} - {:db/id #db/id [:db.part/user -202] + {:db/id "-202" :movie/title "Predator" :movie/year 1987 - :movie/director #db/id [:db.part/user -108] - :movie/cast [#db/id [:db.part/user -101] - #db/id [:db.part/user -109] - #db/id [:db.part/user -110]] - :movie/sequel #db/id [:db.part/user -211]} + :movie/director "-108" + :movie/cast ["-101" + "-109" + "-110"] + :movie/sequel "-211"} - {:db/id #db/id [:db.part/user -203] + {:db/id "-203" :movie/title "Lethal Weapon" :movie/year 1987 - :movie/director #db/id [:db.part/user -111] - :movie/cast [#db/id [:db.part/user -112] - #db/id [:db.part/user -113] - #db/id [:db.part/user -114]] - :movie/sequel #db/id [:db.part/user -212]} + :movie/director "-111" + :movie/cast ["-112" + "-113" + "-114"] + :movie/sequel "-212"} - {:db/id #db/id [:db.part/user -204] + {:db/id "-204" :movie/title "RoboCop" :movie/year 1987 - :movie/director #db/id [:db.part/user -115] - :movie/cast [#db/id [:db.part/user -116] - #db/id [:db.part/user -117] - #db/id [:db.part/user -118]]} + :movie/director "-115" + :movie/cast ["-116" + "-117" + "-118"]} - {:db/id #db/id [:db.part/user -205] + {:db/id "-205" :movie/title "Commando" :movie/year 1985 - :movie/director #db/id [:db.part/user -119] - :movie/cast [#db/id [:db.part/user -101] - #db/id [:db.part/user -120] - #db/id [:db.part/user -121]] + :movie/director "-119" + :movie/cast ["-101" + "-120" + "-121"] :trivia "In 1986, a sequel was written with an eye to having John McTiernan direct. Schwarzenegger wasn't interested in reprising the role. The script was then reworked with a new central character, eventually played by Bruce Willis, and became Die Hard"} - {:db/id #db/id [:db.part/user -206] + {:db/id "-206" :movie/title "Die Hard" :movie/year 1988 - :movie/director #db/id [:db.part/user -108] - :movie/cast [#db/id [:db.part/user -122] - #db/id [:db.part/user -123] - #db/id [:db.part/user -124]]} + :movie/director "-108" + :movie/cast ["-122" + "-123" + "-124"]} - {:db/id #db/id [:db.part/user -207] + {:db/id "-207" :movie/title "Terminator 2: Judgment Day" :movie/year 1991 - :movie/director #db/id [:db.part/user -100] - :movie/cast [#db/id [:db.part/user -101] - #db/id [:db.part/user -102] - #db/id [:db.part/user -125] - #db/id [:db.part/user -126]] - :movie/sequel #db/id [:db.part/user -208]} - - {:db/id #db/id [:db.part/user -208] + :movie/director "-100" + :movie/cast ["-101" + "-102" + "-125" + "-126"] + :movie/sequel "-208"} + + {:db/id "-208" :movie/title "Terminator 3: Rise of the Machines" :movie/year 2003 - :movie/director #db/id [:db.part/user -127] - :movie/cast [#db/id [:db.part/user -101] - #db/id [:db.part/user -128] - #db/id [:db.part/user -129]]} + :movie/director "-127" + :movie/cast ["-101" + "-128" + "-129"]} - {:db/id #db/id [:db.part/user -209] + {:db/id "-209" :movie/title "Rambo: First Blood Part II" :movie/year 1985 - :movie/director #db/id [:db.part/user -130] - :movie/cast [#db/id [:db.part/user -105] - #db/id [:db.part/user -106] - #db/id [:db.part/user -131]] - :movie/sequel #db/id [:db.part/user -210]} + :movie/director "-130" + :movie/cast ["-105" + "-106" + "-131"] + :movie/sequel "-210"} - {:db/id #db/id [:db.part/user -210] + {:db/id "-210" :movie/title "Rambo III" :movie/year 1988 - :movie/director #db/id [:db.part/user -132] - :movie/cast [#db/id [:db.part/user -105] - #db/id [:db.part/user -106] - #db/id [:db.part/user -133]]} + :movie/director "-132" + :movie/cast ["-105" + "-106" + "-133"]} - {:db/id #db/id [:db.part/user -211] + {:db/id "-211" :movie/title "Predator 2" :movie/year 1990 - :movie/director #db/id [:db.part/user -134] - :movie/cast [#db/id [:db.part/user -113] - #db/id [:db.part/user -114] - #db/id [:db.part/user -135]]} + :movie/director "-134" + :movie/cast ["-113" + "-114" + "-135"]} - {:db/id #db/id [:db.part/user -212] + {:db/id "-212" :movie/title "Lethal Weapon 2" :movie/year 1989 - :movie/director #db/id [:db.part/user -111] - :movie/cast [#db/id [:db.part/user -112] - #db/id [:db.part/user -113] - #db/id [:db.part/user -136]] - :movie/sequel #db/id [:db.part/user -213]} + :movie/director "-111" + :movie/cast ["-112" + "-113" + "-136"] + :movie/sequel "-213"} - {:db/id #db/id [:db.part/user -213] + {:db/id "-213" :movie/title "Lethal Weapon 3" :movie/year 1992 - :movie/director #db/id [:db.part/user -111] - :movie/cast [#db/id [:db.part/user -112] - #db/id [:db.part/user -113] - #db/id [:db.part/user -136]]} + :movie/director "-111" + :movie/cast ["-112" + "-113" + "-136"]} - {:db/id #db/id [:db.part/user -214] + {:db/id "-214" :movie/title "Alien" :movie/year 1979 - :movie/director #db/id [:db.part/user -137] - :movie/cast [#db/id [:db.part/user -138] - #db/id [:db.part/user -139] - #db/id [:db.part/user -140]] - :movie/sequel #db/id [:db.part/user -215]} + :movie/director "-137" + :movie/cast ["-138" + "-139" + "-140"] + :movie/sequel "-215"} - {:db/id #db/id [:db.part/user -215] + {:db/id "-215" :movie/title "Aliens" :movie/year 1986 - :movie/director #db/id [:db.part/user -100] - :movie/cast [#db/id [:db.part/user -139] - #db/id [:db.part/user -141] - #db/id [:db.part/user -103]]} + :movie/director "-100" + :movie/cast ["-139" + "-141" + "-103"]} - {:db/id #db/id [:db.part/user -216] + {:db/id "-216" :movie/title "Mad Max" :movie/year 1979 - :movie/director #db/id [:db.part/user -142] - :movie/cast [#db/id [:db.part/user -112] - #db/id [:db.part/user -143] - #db/id [:db.part/user -144]] - :movie/sequel #db/id [:db.part/user -217]} + :movie/director "-142" + :movie/cast ["-112" + "-143" + "-144"] + :movie/sequel "-217"} - {:db/id #db/id [:db.part/user -217] + {:db/id "-217" :movie/title "Mad Max 2" :movie/year 1981 - :movie/director #db/id [:db.part/user -142] - :movie/cast [#db/id [:db.part/user -112] - #db/id [:db.part/user -145] - #db/id [:db.part/user -146]] - :movie/sequel #db/id [:db.part/user -218]} + :movie/director "-142" + :movie/cast ["-112" + "-145" + "-146"] + :movie/sequel "-218"} - {:db/id #db/id [:db.part/user -218] + {:db/id "-218" :movie/title "Mad Max Beyond Thunderdome" :movie/year 1985 - :movie/director [#db/id [:db.part/user -142] - #db/id [:db.part/user -147]] - :movie/cast [#db/id [:db.part/user -112] - #db/id [:db.part/user -148]]} + :movie/director ["-142" + "-147"] + :movie/cast ["-112" + "-148"]} - {:db/id #db/id [:db.part/user -219] + {:db/id "-219" :movie/title "Braveheart" :movie/year 1995 - :movie/director [#db/id [:db.part/user -112]] - :movie/cast [#db/id [:db.part/user -112] - #db/id [:db.part/user -149]]} + :movie/director ["-112"] + :movie/cast ["-112" + "-149"]} ] diff --git a/resources/db/schema.edn b/resources/db/schema.edn index 2d58b23..dc568c1 100644 --- a/resources/db/schema.edn +++ b/resources/db/schema.edn @@ -2,54 +2,45 @@ {:db/ident :movie/title :db/valueType :db.type/string :db/cardinality :db.cardinality/one - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} {:db/ident :movie/year :db/valueType :db.type/long :db/cardinality :db.cardinality/one - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} {:db/ident :movie/director :db/valueType :db.type/ref :db/cardinality :db.cardinality/many - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} {:db/ident :movie/sequel :db/valueType :db.type/ref :db/cardinality :db.cardinality/one - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} - + {:db/ident :movie/cast :db/valueType :db.type/ref :db/cardinality :db.cardinality/many - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} - + {:db/ident :person/name :db/valueType :db.type/string :db/cardinality :db.cardinality/one - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} {:db/ident :person/born :db/valueType :db.type/instant :db/cardinality :db.cardinality/one - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} {:db/ident :person/death :db/valueType :db.type/instant :db/cardinality :db.cardinality/one - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} {:db/ident :trivia :db/valueType :db.type/string :db/cardinality :db.cardinality/many - :db/id #db/id [:db.part/db] :db.install/_attribute :db.part/db} ] \ No newline at end of file diff --git a/src/clj/learndatalogtoday/handler.clj b/src/clj/learndatalogtoday/handler.clj index 0fcd098..3bd1da8 100644 --- a/src/clj/learndatalogtoday/handler.clj +++ b/src/clj/learndatalogtoday/handler.clj @@ -8,7 +8,7 @@ [datomic-query-helpers.core :refer [check-query normalize pretty-query-string]] - [datomic.api :as d] + [datomic.client.api :as d] [fipp.edn :as fipp] [hiccup.page :refer [html5]] [learndatalogtoday.views :as views] @@ -116,12 +116,14 @@ (route/not-found "Not Found"))) (defn init-db [name schema seed-data] - (let [uri (str "datomic:mem://" name) - conn (do (d/delete-database uri) - (d/create-database uri) - (d/connect uri))] - @(d/transact conn schema) - @(d/transact conn seed-data) + (let [client (d/client {:storage-dir :mem + :server-type :datomic-local + :system "dev"}) + conn (do (d/delete-database client {}) + (d/create-database client {}) + (d/connect client {}))] + (d/transact conn {:tx-data schema}) + (d/transact conn {:tx-data seed-data}) (d/db conn))) (def app