![gQuery](./gQuery.png) # qQuery ## Not like jQuery. A GraphQL Fetcher & Cache for Svelte Kit ### UnderConstruction.gif More information in this space soon. API is very much in flux rn. ### Preview ### 1. Initialize G ``` export const g = new GFetch({ path: Environment.apiURL //whatever your api url is here }) ``` ### 2. Add GraphQL Codegen Plugin ``` svelte.config.js import gQueryCodegen from '@leveluptuts/g-query/codegen' ... plugins: [ gQueryCodegen({ schema: './src/lib/graphql/schema.graphql', // path to schema, schema is required output: './src/lib/graphql', // Where you want the general schema types to output gPath: '$lib/config/g' //Path to g, created in step 1. }) ], ... ``` ### 3. Add .graphql files ``` UserQueries.graphql query user { user { _id } } ``` ### 4. Use that thang The code gen will find the file and spit out a file next to it. Named `FileName.gGenerated.ts` Using the above code, it would output `UserQueries.gGenerated.ts` This also gives us a `get` function for queries based on the query name. ie `getUser` for the above. ```javascript ``` ## FAQ / WTF ### Q? How tf do I update the cache? It's a Svelte Writable Store. So after a mutation you can quickly and easily manually update the cache. ``` import { user, someMutation } from './UserQueries.gGenerated.graphql' $user = null // clears the cache $user = await someMutation({ variables }) // if this returns the correct data ``` ### Q? Can't you update the cache magically for me after a mutation? Maybe? If you want to be in charge of writing that bit, the door is open 😼. My idea for the api would look something like this. ``` import { user, someMutation } from './UserQueries.gGenerated.graphql' await someMutation({ variables, store: user }) ``` ### Q? Why can't I use this yet? IT'S GETTING CLOSER