Nick Alexander
611d44fcce
Process lookup-refs in batches. Fixes #25 .
...
This uses a common table expression and multiple SQL calls rather than a
temporary table, since transactions with huge numbers of distinct
lookup-refs are likely to be very rare.
We mark lookup-refs with `lookup-ref`, which is a little awkward because
binding `(let [[a v] lookup-ref] ...)` doesn't directly work, but avoids
some ambiguity present in Datomic and DataScript around interpreting
lookup-refs as multiple value lists. (Which bit the tests in an earlier
version of this patch!)
2016-09-30 16:47:04 -07:00
Nick Alexander
20531c1789
Pre: Don't insert nil tx where it should not be.
2016-09-30 16:47:04 -07:00
Nick Alexander
c46f0eb8ae
Part 2: Get rid of {0, 1} -> {2, 3} mapping for added/added0. Fixes #28 .
...
Now that we copying from tx_lookup_before -> tx_lookup_after, we don't
need to avoid duplicating rows.
2016-09-30 16:47:04 -07:00
Nick Alexander
da1250d210
Part 1: Separate tx_lookup into tx_lookup_before and tx_lookup_after.
2016-09-30 16:47:04 -07:00
Richard Newman
a7d6a37cfc
Update comment in cc.cljc.
2016-09-29 15:49:30 -07:00
Richard Newman
6ab93208cb
Part 2: implement complex 'or' translation. Fixes #57 . r=nalexander
...
We implement sql-projection-for-simple-variable-list to allow us to add
a projection to subqueries.
2016-09-29 15:46:15 -07:00
Richard Newman
b9b9c37dfa
Part 1: pass in :select when creating a partial subquery from a CC.
2016-09-29 15:44:16 -07:00
Richard Newman
1296b8090f
Allow sets of attributes in fulltext expressions. Fixes #54 . r=nalexander
2016-09-26 16:34:37 -07:00
Richard Newman
32cd08ba13
Add more build instructions to the README.
2016-09-22 16:50:59 -07:00
Richard Newman
8dd15244fa
Update README.
2016-09-22 16:45:52 -07:00
Richard Newman
d6c074830f
Implement a JS interface for Datomish, demonstrating it with a small Firefox add-on. Fixes #53 . r=nalexander
2016-09-22 16:42:18 -07:00
Richard Newman
9587311412
Include deps.cljs giving externs for Node.js consumers; normalize build output.
...
cljsbuild using leiningen projects that depend on Datomish will
automatically include the externs.
2016-09-22 16:24:37 -07:00
Richard Newman
d0a04a5e56
Review comment: extracted shared go-promise.
2016-09-22 16:24:37 -07:00
Richard Newman
03d8d178fb
Add CREDITS file for the icon the add-on uses.
2016-09-22 16:24:37 -07:00
Richard Newman
155f9b6d98
Add Public Domain license to addon code.
2016-09-22 16:24:37 -07:00
Richard Newman
548340c655
Copy the built datomish.js when building the add-on.
2016-09-22 16:24:37 -07:00
Richard Newman
17d7eaec7b
Add a babelified test file, Webpack the add-on, and make the JS API work.
...
We concatenate a simple setTimeout monkeypatch onto the add-on itself.
2016-09-22 15:59:15 -07:00
Richard Newman
360f7622e8
Add handling of simple schemas. Fixes #53 .
2016-09-22 15:59:15 -07:00
Richard Newman
bae1cfdc77
Alter release node config to be a bit more human-readable.
2016-09-22 15:59:15 -07:00
Richard Newman
4f37a86039
Use cljify in promise-sqlite.
2016-09-22 15:59:15 -07:00
Richard Newman
ea027e8cea
Implement cljify.
2016-09-22 15:59:15 -07:00
Richard Newman
1d53d547b8
Externs.
2016-09-22 12:43:36 -07:00
Richard Newman
330433a45c
Add externs file for Node's use of promise_sqlite.
2016-09-22 12:43:35 -07:00
Richard Newman
d178c53dcb
Use normal sqlite3 and promise_sqlite.
2016-09-22 12:43:35 -07:00
Richard Newman
77fb997785
Fix source paths.
2016-09-22 12:43:35 -07:00
Nick Alexander
2e9a0f089c
Include src/node in global source-paths. r=me
...
When consuming Datomish from another leiningen project, the .cljs files
need to be included as well.
2016-09-21 13:47:20 -07:00
Nick Alexander
1a30306314
Move datomish.api into exported namespace.
2016-09-19 12:03:09 -07:00
Richard Newman
b5aec2e890
Move src-node and src-browser into subdirectories of src.
2016-09-09 12:07:03 -07:00
Richard Newman
ac253bfea0
Make Datomish work in a Firefox add-on on top of Sqlite.jsm. Fixes #48 . r=nalexander
2016-09-09 09:26:19 -07:00
Richard Newman
ee2dca05d0
Add a restartless add-on to load Datomish in Firefox.
2016-09-08 19:11:44 -07:00
Richard Newman
418bb34d57
Add is-node?.
2016-09-08 19:11:44 -07:00
Richard Newman
5ccc725b56
Flesh out JS API.
2016-09-08 19:11:44 -07:00
Richard Newman
d755cd860e
Add externs file for Sqlite.jsm.
2016-09-08 19:11:44 -07:00
Richard Newman
97bc90ae30
Add a preload script to set up console.log for browser use as println.
2016-09-08 19:11:44 -07:00
Richard Newman
113cff42aa
Add a stub datomish.core for browser code.
2016-09-08 19:11:44 -07:00
Richard Newman
9e4e95ce51
Default SQLite's user_version to zero.
...
I saw nil here with Sqlite.jsm.
2016-09-08 19:11:44 -07:00
Richard Newman
b11b6c92d9
Implement js-sqlite for browser code.
2016-09-08 19:11:44 -07:00
Richard Newman
1cfbf8498c
Introduce js-sqlite as an abstraction wrapper around Sqlite.jsm and promise-sqlite.
2016-09-08 19:11:44 -07:00
Richard Newman
cc25ce33e2
Move platform-specific code into src-node.
2016-09-08 19:11:44 -07:00
Richard Newman
c4f5564b35
We need to monkey-patch setTimeout for Sandbox contexts.
2016-09-08 19:11:44 -07:00
Richard Newman
e76d7305d1
Split release-js into release-node and release-browser.
...
Also expand our clean targets, and rewrite our build targets to generate
different code for Node and Firefox.
2016-09-08 19:11:43 -07:00
Richard Newman
9dbda3d9d8
Pre: remove exec_repl.cljc.
2016-09-08 19:04:15 -07:00
Richard Newman
fb8d46a4d7
Pre: bump to the latest ClojureScript release.
2016-09-08 19:04:15 -07:00
Richard Newman
687fddf709
Pre: .gitignore.
2016-09-08 19:04:15 -07:00
Richard Newman
53322d8389
Pre: @arg -> @param to quiet cljsbuild warnings.
2016-09-08 19:04:15 -07:00
Nick Alexander
21f672f921
Serialize and de-serialize non-keyword schema values correctly. Fixes #52 . r=rnewman
2016-09-07 17:31:59 -07:00
Nick Alexander
659c26339c
Serialize and de-serialize non-keyword schema values correctly. Fixes #52 .
2016-09-07 17:31:30 -07:00
Nick Alexander
562ced372d
Add :db.fn/retractAttribute and :db.fn/retractEntity. Fixes #46 . r=rnewman
2016-09-06 13:13:30 -07:00
Nick Alexander
362bdb2028
Add :db.fn/retractAttribute and :db.fn/retractEntity. Fixes #46 .
...
There's no distinction made for fulltext attributes, since the values
found by the retractAttributes SELECT are already rowids into the
fulltext_values table and therefore need no additional mapping.
2016-09-06 13:13:20 -07:00
Nick Alexander
94bac9704b
Pre: Use SQLite temp files in deftest-db.
...
These temp files will almost certainly live in memory only, speeding our
test suite evaluation significantly. Before this patch, in a warmed
REPL environment I get:
Testing datomish.db-test
Ran 19 tests containing 97 assertions.
0 failures, 0 errors.
"Elapsed time: 1408.720681 msecs"
"Elapsed time: 1343.986464 msecs"
"Elapsed time: 1338.660762 msecs"
After this patch, in a warmed REPL environment I get:
Testing datomish.db-test
Ran 19 tests containing 97 assertions.
0 failures, 0 errors.
"Elapsed time: 587.605168 msecs"
"Elapsed time: 569.522333 msecs"
"Elapsed time: 589.080282 msecs"
2016-09-06 13:13:20 -07:00