mpdairy / posh

A luxuriously simple and powerful way to make front-ends with DataScript and Reagent in Clojure.
Eclipse Public License 1.0
460 stars 45 forks source link

Support for tuple valueTypes #37

Closed Quezion closed 4 years ago

Quezion commented 4 years ago

As of June this year, Datomic added support for attributes of :db/type :tuple. The documentation for this feature is at https://docs.datomic.com/on-prem/schema.html#tuples

DataScript happens to support this out-of-the-box, though I'll note that attempting to transact an attribute with the above :db/type will cause it to throw an exception. I'll open an issue in DataScript requesting this support as I suspect it'll be easy to allow there.

My question is if we can get this support in Posh. I did some preliminary testing (documented in https://github.com/denistakeda/re-posh/issues/32 ) and found that by disabling posh.lib.q-analyze/resolve-any-idents that Posh just worked as long as the query passed the tuple as an :in argument.

Queries that inlined a tuple in a :where clause still failed with an error from normalize-all-eavs.

Though the amount going on in q-analyze is a bit intimidating, I'll try fixing the above two functions tomorrow.

I don't know whether this would affect the results from Posh's pull API -- it probably "just works" but will test it if I can get query working.