Fork me on GitHub
#precept
<
2019-07-14
>
Drew Verlee16:07:02

What's used as the in memory fact store? Can it be synced with datomic?

alex-dixon16:07:08

Hi. Sorry just saw this. We don’t have isComponent. The entity macro is the closest support for anything like pull

alex-dixon16:07:00

Apart from Clara the in memory storage is a map in a Clojure atom. In the code it’s referred to as the store. That’s what subscriptions are based on. There’s also indexes used to enforce cardinality and uniqueness

alex-dixon17:07:18

You can sync with datomic but there aren’t any highly developed facilities specific to that. There are some helpers that allow separation of a client schema from a datomic schema to allow pulling all facts from the datomic schema. The main use case for that is to help filter out client only concerns like the state of a button. Precept allows complex value slot types like vectors and maps that datomic doesn’t have a direct equivalent for. You could mark those can be marked as client only and filter them out. Otherwise at this point you’d need to hand convert them to a datomic supported format

Drew Verlee18:07:06

@alex-dixon > apart from clara, Meaning precept also uses what ever storage clara is building? I assume this structure is in memory on the browser side. Thanks!

alex-dixon19:07:48

Effectively yes. Precept doesn’t interact with Clara’s rete network for anything directly as part of its implementation. A more memory efficient implementation might try to do that. Everything’s immutable so there’s probably some structural sharing but no doubt values being indexed in multiple places. Our indexes for one are covering similar to datomic