Commit graph

340 commits

Author SHA1 Message Date
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
Nick Alexander cfdce12c1a Pre: Use deftest-db in tests. 2016-09-06 13:13:20 -07:00
Richard Newman 8e8dd21164 Implement :limit and :order-by-vars. Fixes #37. r=nalexander 2016-09-02 16:24:10 -07:00
Richard Newman 5424e61be4 Review comment: args -> inputs. 2016-09-02 16:23:30 -07:00
Richard Newman 1197764949 Implement :limit and :order-by-vars. Fixes #37.
We'd like this to be part of the query syntax itself, but doing so
requires extending DataScript's parser.

Instead we generalize our `args` to `options`, and take `:limit`
and `:order-by-vars`. The former must be an integer or nil, and the
latter is an array of `[var direction]` pairs.

This commit includes descriptive error messages and tests for success
and failure.
2016-09-02 08:32:45 -07:00