| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Plugin for precompile static DataScript query to Mori structs. Also plugin checks query in compile-time with Datascript parse-query API.
var Datalog = Datalog.Q`[:find ?e ?email
:in $ [[?n ?email]]
:where [?e :name ?n]]`;import { mori as _mori } from 'datascript-mori';
var Datalog = _mori.vector(_mori.keyword('find'), _mori.symbol('?e'), _mori.symbol('?email'), _mori.keyword('in'), _mori.symbol('$'), _mori.vector(_mori.vector(_mori.symbol('?n'), _mori.symbol('?email'))), _mori.keyword('where'), _mori.vector(_mori.symbol('?e'), _mori.keyword('name'), _mori.symbol('?n')));Datalog query is a ClojureScript data structures, not a string. In JS API Datalog query is a string which convert to CLJS data structures in runtime Babel-plugin transfers this convertaion in compile-time. Conversion in compile-time has two advantages:
var q1 = Datalog`[ :find (sum ?heads)
:with ?monster
:in [[?monster ?heads]]`;This code doesnt compile because in EDN string missing closing bracket ]. Also query with tag Datalog.Q and Datalog.Pull checks with parse-query and parse-pull API.
var q1 = Datalog.Q`[:find ?e :with ?f :where [?e]]`;;This code doesnt compile because in query variable ?f is unknown.
| Back | FazBrowse Home | New Git URL |