mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-16 01:44:03 +03:00
865b150c82
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
103 lines
3.0 KiB
Markdown
103 lines
3.0 KiB
Markdown
# svelte-graphql-app
|
|
|
|
A sample [Svelte 3](https://svelte.dev) app to demonstrate usage of GraphQL Queries, Mutations and Subscriptions with [svelte-apollo](https://github.com/timhall/svelte-apollo), Hasura GraphQL engine and Postgres as database. Forked from the standard svelte [template](https://github.com/sveltejs/template)
|
|
|
|
[![Edit svelte-graphql](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/hasura/graphql-engine/tree/master/community/sample-apps/svelte-apollo?fontsize=14)
|
|
|
|
## Deploy Hasura
|
|
|
|
- Deploy Postgres and GraphQL Engine on Heroku:
|
|
|
|
[![Deploy to
|
|
heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/hasura/graphql-engine-heroku)
|
|
|
|
Please checkout our [docs](https://hasura.io/docs/1.0/graphql/manual/deployment/index.html) for other deployment methods
|
|
|
|
- Get the Heroku app URL (say `my-app.herokuapp.com`)
|
|
- Create `author` table:
|
|
|
|
Open Hasura console: visit https://my-app.herokuapp.com on a browser
|
|
Navigate to `Data` section in the top nav bar and create a table as follows:
|
|
|
|
![Create author table](../gatsby-postgres-graphql/assets/add_table.jpg)
|
|
|
|
- Insert sample data into `author` table:
|
|
|
|
![Insert data into author table](../gatsby-postgres-graphql/assets/insert_data.jpg)
|
|
|
|
Verify if the row is inserted successfully
|
|
|
|
![Insert data into author table](../gatsby-postgres-graphql/assets/browse_rows.jpg)
|
|
|
|
- Similarly, create an article table with the following data model:
|
|
table: `article`
|
|
columns: `id`, `title`, `content`, `author_id` (foreign key to `author` table's `id`) and `created_at`
|
|
|
|
![Create foreign key for author_id column to author's id](./assets/author_fk.png)
|
|
|
|
- Now create a relationship from article table to author table by going to the Relationships tab.
|
|
|
|
- Clone this repo:
|
|
```bash
|
|
git clone https://github.com/hasura/graphql-engine
|
|
cd graphql-engine/community/sample-apps/svelte-apollo
|
|
```
|
|
|
|
## Setup App
|
|
|
|
Install the dependencies...
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
- Open `src/apollo.js` and configure Hasura's GraphQL Endpoint as follows:
|
|
|
|
```javascript
|
|
|
|
const wsLink = new WebSocketLink({
|
|
uri: "ws://localhost:8080/v1/graphql",
|
|
options: {
|
|
reconnect: true,
|
|
lazy: true
|
|
},
|
|
connectionParams: () => {
|
|
return { headers: getHeaders() };
|
|
},
|
|
});
|
|
|
|
const httpLink = new HttpLink({
|
|
uri: "http://localhost:8080/v1/graphql",
|
|
headers: getHeaders()
|
|
});
|
|
|
|
```
|
|
Replace the `uri` argument with your Hasura GraphQL Endpoint for both `wsLink` and `httpLink`
|
|
|
|
Start [Rollup](https://rollupjs.org):
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Navigate to [localhost:5000](http://localhost:5000). You should see your app running. Edit a component file in `src`, save it, and reload the page to see your changes.
|
|
|
|
## Deploying to the web
|
|
|
|
### With [now](https://zeit.co/now)
|
|
|
|
Install `now` if you haven't already:
|
|
|
|
```bash
|
|
npm install -g now
|
|
```
|
|
|
|
Then, from within your project folder:
|
|
|
|
```bash
|
|
now
|
|
```
|
|
|
|
This will deploy the app on Now 2.0 Platform and you have the Svetle app running live :)
|
|
|