Triplit REPL Learns Some New Tricks
New experimental REPL features
We've made some improvements to the REPL in the Triplit CLI. The REPL is a great way to interact with your Triplit database without having to write a full script. You can run it with triplit repl
in your terminal. Inside the REPL, you can run queries and fetch data using the global triplit
object, which is just a client syncing with your remote database.
We've added a few new features to the REPL:
.schema
will pretty-print the schema of the database.
.fetch <collection> where <attribute> <op> <value>
is SQL-inspired shorthand fortriplit.fetch(triplit.query(<collection>).where(<attribute>, <op>, <value>))
. At the moment it only supports specifying a collection and a filter, but we're planning to add support for other query parameters soon.
Supporting undefined
in filters
You can now pass undefined
to where
filters in the query builder. We added this after finding ourselves needing to conditionally add filters to a query. By combining the additive behavior of our query behavior with the new undefined
support, you can now conditionally add filters to a query. Here's an example from one of our internal todos apps:
Before, when a filter like where([validFilter, undefined, undefined])
would throw errors, we had to write something ugly like this:
client
.query('todos')
.where([
...(showCompleted ? [] : [['completed', '=', false]]),
...(selectedTag ? [['tagIds', '=', selectedTag]] : []),
...(textFilter ? [['text', 'like', textFilter]] : []),
]);
Now that undefined
filters are ignored, we can write something more concise:
client
.query('todos')
.where(showCompleted ? undefined : ['completed', '=', false]),
.where(selectedTag ? ['tagIds', '=', selectedTag] : undefined),
.where(textFilter ? ['text', 'like', textFilter] : undefined);
New RSS feed
We've added an RSS feed to the Triplit blog. You can subscribe to it here.