We will work with Hasura Cloud for this workshop:
- Head to cloud.hasura.io
- Create a new project and get a free db from Heroku
In case you prefer to work locally with docker containers instead:
Use docker-compose up -d
View your new Hasura GraphQL Engine Console at http://localhost:8080 (admin secret from docker-compose.yaml: adminsecret
)
Note: To end a session, use docker-compose down -v
- Head to the Data tab and go to the Run SQL window
- Run northwind_ddl.sql
- Run northwind_data.sql
Use the following command to set up initial tables and data into your postgres container:
psql postgres://postgres:mypassword@localhost:6432/postgres < northwind_ddl.sql
psql postgres://postgres:mypassword@localhost:6432/postgres < northwind_data.sql
If you do not have psql
available, you can copy the northwind_ddl.sql
and northwind_data.sql
file to the postgres container and execute the psql
command via inside it:
Note: You can find <postgres-container-ID>
with docker ps
docker cp northwind_ddl.sql <postgres-container-ID>:/
docker cp northwind_data.sql <postgres-container-ID>:/
docker exec -ti <postgres-container-ID> /bin/bash
psql -U postgres < northwind_ddl.sql
psql -U postgres < northwind_data.sql
Return to the Hasura GraphQL Engine console and select the Data tab. In the central view, there should be a section "Untracked tables or views" with several tables listed and a "Track All" option available. Select "Track All", and then "Track All" again for untracked foreign-key relations.
Now you're all set! You should see your tables listed in the left-hand panel.
Go to the Graphiql tab and start trying out queries, mutations, and subscriptions.
The Northwind dataset includes sample data for the following.
- Suppliers: Suppliers and vendors of Northwind
- Customers: Customers who buy products from Northwind
- Employees: Employee details of Northwind traders
- Products: Product information
- Shippers: The details of the shippers who ship the products from the traders to the end-customers
- Orders and Order_Details: Sales Order transactions taking place between the customers & the company
Table: Customer, Order, Shipper Role: customer
Rules:
- Customer can only select their own row in customer table
- Customer can get their orders.
Table: employees Role: employee, hr
Rules:
- Employee can see and edit their own information.
- HRs can see and edit information of all employees
Table: products role: api
Rules:
- Only consumers with valid api key can see the products table
A role is a collection of permissions. Permissions determine what operations are allowed on a resource. When you grant a role to a user, all permissions in the role are automatically granted to the user.
Hasura has role-based schemas.
Attributes are values that are associated with a user or resource.
Hasura can use user attributes and data attributes
- How to define your own types and fields
- How to resolve the field with a REST API
- How to bring another GraphQL API
- How to create relationships across them (Remote Joins!)