are there any paas/baas kind of tools built on top of datomic? ex - supabase on top of postgres
Yes. Thank you @cormacc for the mention! http://shipclojure.com will have a new stack with datomic, replicant & datascript. It handles auth, user management, verification & onboarding. And Iβm investigating if datomic can be deployed on http://fly.io as part of the same docker. This stack is not yet released but will be pretty soon
"In full honesty, I am looking at bitemporal DBs because I see a raising interest in them. I am considering providing plugins or guides to change the database to https://www.datomic.com/ or https://xtdb.com/. This is not my main focus at the moment but it is in the backlog." π I was myself thinking of such a thing but there you are.
does datomic cloud count?
None that I am aware of
> does datomic cloud count? I assume not, since thatβs more like do-it-yourself IaaS (infrastructure as a service)
I have tried it and it was quite straightforward to setup, with an AWS account β it requires a basic level of AWS knowledge and tinkering.
I'm not aware of any, but @ovidiu.stoica1094's shipclojure offering is a deployment template covering similar ground. The live version is uix2 / postgres, but gather from a conversation at reclojure yesterday that he's working on a datomic/datascript/replicant variant. You'd still have to own your deployment but sounds like he's done a lot of the heavy lifting
Like ten years ago, I seem to recall a demo of datomic where you could pass raw CLJ vectors to d/q and query it. Am I hallucinating or is that supported? Is it documented?
Is this what you saw (2013)? https://www.augustl.com/blog/2013/find_by_id_in_datomic/ Written by @augustl
I think it was at one of the first official Clojure conferences where datomic was being shown off
ohai π I got that from Stuart Halloway iirc, he demonstrated joining between Datomic and an Excel spreadsheet by parsing the sheet and converting it to vectors of facts π
Cloud/client api needs a db as its first datasource because it needs a machine on which to run the query.
Peer does not have this limitation because the query runs on the peer itself.
In either case you can supply non-datomic datasources.
(datomic.api/q
'[:find ?e
:where
[?e :really/awesome? true]]
'([1 :really/awesome? true]
[2 :really/awesome? false]))
Right, this works!with cloud, just supply additional datasources
include the first one just as the place to run the query
e.g. (d/q '[:find ... :in $client $ :where [...])`
You can also use multiple:
:in $a $b :where [$a ?foo][$b ?foo] ...Rules can use a specific datasource, but unfortunately not multiple
($my-ds my-rule-name ?rule-arg ...)
"rules" includes or-join/or/not-join/not, which are rules under the hood
Thanks!
and related, can you d/q the results of d/q, for filtering etc?
you can call d/q in a where clause
:where [[?pro :profile/id ?profile-id]
[(q '[:find [?contact ...]
:in $ ?pro
:where
[?contact :contact/of-profile ?pro]]
$ ?pro) ?cs]
[(set ?cs) ?cset]
.... more clauses