Open sgup opened 3 months ago
I like your idea! Especially the query builder callback ((q) => q.include(allFilms"....
) Have you tried implementing this in "userland"? Seemingly only thing that would need to change is the @triplit/react
package.
// no build() or client ref required as it can be accessed from class
Yeah, I'd also like to see this simplified syntax across all frameworks (svelte, etc) that use useQuery!
@sgup Maybe you could add a PR to add the abridged syntax version to the core ?
Also think this looks way more useable. The only annoying part here is, that you have to bind the client somehow to useQuery. I made a example implementation for the vue package here
import { TriplitClient, Schema as S, ClientSchema } from '@triplit/client';
import { useTriplit } from '@triplit/vue';
const schema = {
todos: {
schema: S.Schema({
id: S.Id(),
text: S.String(),
complete: S.Boolean(),
}),
},
} satisfies ClientSchema;
const client = new TriplitClient({
serverUrl: YOUR_SERVER_URL,
token: YOUR_TOKEN,
schema
});
const { useQuery } = useTriplit(client);
const { fetching, results, error, updateQuery } = useQuery(
'todos',
(q) => q.where('complete', '!=', false)
);
But you can still use useQuery directly where you have to pass in the client for every function call. Let me know what you think :)
In a query like this:
In the
ClientQueryBuilder class
, why not expose the currentQ
Query and a reference to the client, so it could be simplified further to:& since
useQuery
is a react-specific hook, and thus made specifically to provide an easier/better interface over triplit, it would make sense to go further react-y and use the context/provider pattern:& in the components:
Final Diff: