From 7126112cc334eed30bad38af6eecf1c794b05959 Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Tue, 22 Feb 2022 08:17:58 -0500 Subject: [PATCH] Add latest datascript (#1185) * Update datascript config Add db ns, loads latest datascript and can load datascript-transit library. All tests for pull.cljc and query.cljc pass except for queries with fns as inputs * Add datalog-parser to projects.md per #1171 comment --- doc/projects.md | 5 +++++ feature-datascript/babashka/impl/datascript.clj | 17 ++++++++++++++++- feature-transit/babashka/impl/transit.clj | 1 + project.clj | 2 +- src/babashka/impl/classes.clj | 10 ++++++++++ src/babashka/main.clj | 3 ++- 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/doc/projects.md b/doc/projects.md index 31d84540..bdb4eef7 100644 --- a/doc/projects.md +++ b/doc/projects.md @@ -59,6 +59,7 @@ The following libraries and projects are known to work with babashka. - [specmonstah](#specmonstah) - [markdown-clj](#markdown-clj) - [algo.monads](#algomonads) + - [datalog-parser](#datalog-parser) - [Pods](#pods) - [Projects](#projects-1) - [babashka-test-action](#babashka-test-action) @@ -793,6 +794,10 @@ Markdown parser that translates markdown to html. Macros for defining monads, and definition of the most common monads. +### [datalog-parser](https://github.com/lambdaforge/datalog-parser) + +Datalog parser that is compliant with datomic, datascript and datahike. + ## Pods [Babashka pods](https://github.com/babashka/babashka.pods) are programs that can diff --git a/feature-datascript/babashka/impl/datascript.clj b/feature-datascript/babashka/impl/datascript.clj index e7369be3..986723f3 100644 --- a/feature-datascript/babashka/impl/datascript.clj +++ b/feature-datascript/babashka/impl/datascript.clj @@ -1,12 +1,27 @@ (ns babashka.impl.datascript {:no-doc true} (:require [datascript.core :as d] + [datascript.db :as db] [sci.impl.namespaces :refer [copy-var]] [sci.impl.vars :as vars])) (def datascript-ns (vars/->SciNamespace 'datascript.core nil)) +(def datascript-db-ns (vars/->SciNamespace 'datascript.db nil)) (def datascript-namespace {'create-conn (copy-var d/create-conn datascript-ns) 'transact! (copy-var d/transact! datascript-ns) - 'q (copy-var d/q datascript-ns)}) + 'q (copy-var d/q datascript-ns) + 'empty-db (copy-var d/empty-db datascript-ns) + 'db-with (copy-var d/db-with datascript-ns) + 'filter (copy-var d/filter datascript-ns) + 'init-db (copy-var d/init-db datascript-ns) + 'datom (copy-var d/datom datascript-ns) + 'pull (copy-var d/pull datascript-ns) + 'pull-many (copy-var d/pull-many datascript-ns)}) + +(def datascript-db-namespace + {'db-from-reader (copy-var db/db-from-reader datascript-db-ns) + 'datom-from-reader (copy-var db/datom-from-reader datascript-db-ns) + 'datom-added (copy-var db/datom-added datascript-db-ns) + 'datom-tx (copy-var db/datom-tx datascript-db-ns)}) diff --git a/feature-transit/babashka/impl/transit.clj b/feature-transit/babashka/impl/transit.clj index c78ed0a4..ab249c6a 100644 --- a/feature-transit/babashka/impl/transit.clj +++ b/feature-transit/babashka/impl/transit.clj @@ -16,4 +16,5 @@ 'reader (copy-var transit/reader tns) 'read-handler (copy-var transit/read-handler tns) 'read-handler-map (copy-var transit/read-handler-map tns) + 'default-write-handlers (copy-var transit/default-write-handlers tns) 'tagged-value (copy-var transit/tagged-value tns)}) diff --git a/project.clj b/project.clj index 06242a09..ffbb9ac2 100644 --- a/project.clj +++ b/project.clj @@ -46,7 +46,7 @@ :feature/transit {:source-paths ["feature-transit"] :dependencies [[com.cognitect/transit-clj "1.0.329"]]} :feature/datascript {:source-paths ["feature-datascript"] - :dependencies [[datascript "1.0.1"]]} + :dependencies [[datascript "1.3.10"]]} :feature/httpkit-client {:source-paths ["feature-httpkit-client"] :dependencies [[http-kit "2.5.3"]]} :feature/httpkit-server {:source-paths ["feature-httpkit-server"] diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index 434a1208..2542879e 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -384,6 +384,16 @@ ~(symbol "[I") ~(symbol "[Ljava.lang.Object;") ~(symbol "[Ljava.lang.Double;") + ~@(when features/datascript? + `[me.tonsky.persistent_sorted_set.PersistentSortedSet + datascript.db.DB + datascript.db.Datom + ~(symbol "[Lclojure.lang.Keyword;") + ~(symbol "[Lclojure.lang.PersistentArrayMap;") + ~(symbol "[Lclojure.lang.PersistentVector;") + ~(symbol "[Lclojure.lang.PersistentHashSet;") + ~(symbol "[Ljava.util.regex.Pattern;") + ~(symbol "[Lclojure.core$range;")]) ~@(when features/yaml? '[org.yaml.snakeyaml.error.YAMLException]) ~@(when features/hsqldb? '[org.hsqldb.jdbcDriver])] :constructors [clojure.lang.Delay diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 1eafe409..dc65b9c1 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -385,7 +385,8 @@ Use bb run --help to show this help output. 'next.jdbc.result-set @(resolve 'babashka.impl.jdbc/result-set-namespace)) features/csv? (assoc 'clojure.data.csv @(resolve 'babashka.impl.csv/csv-namespace)) features/transit? (assoc 'cognitect.transit @(resolve 'babashka.impl.transit/transit-namespace)) - features/datascript? (assoc 'datascript.core @(resolve 'babashka.impl.datascript/datascript-namespace)) + features/datascript? (assoc 'datascript.core @(resolve 'babashka.impl.datascript/datascript-namespace) + 'datascript.db @(resolve 'babashka.impl.datascript/datascript-db-namespace)) features/httpkit-client? (assoc 'org.httpkit.client @(resolve 'babashka.impl.httpkit-client/httpkit-client-namespace) 'org.httpkit.sni-client @(resolve 'babashka.impl.httpkit-client/sni-client-namespace)) features/httpkit-server? (assoc 'org.httpkit.server @(resolve 'babashka.impl.httpkit-server/httpkit-server-namespace))