87 lines
1.5 KiB
Markdown
87 lines
1.5 KiB
Markdown
# SeaORM + Seaography Example
|
|
|
|
|  |
|
|
|:--:|
|
|
| Seaography screenshot with Bakery schema |
|
|
|
|
|  |
|
|
|:--:|
|
|
| The Bakery schema |
|
|
|
|
## Specifiy a database url
|
|
|
|
```
|
|
export DATABASE_URL=mysql://sea:sea@localhost/bakery
|
|
```
|
|
|
|
## Setup the Database
|
|
|
|
Cd into `migration` folder and follow instructions there, but basically:
|
|
|
|
```sh
|
|
cargo run
|
|
```
|
|
|
|
## Install Seaography
|
|
|
|
```sh
|
|
cargo install seaography-cli@^1.0.0-rc.2
|
|
```
|
|
|
|
## Generate GraphQL project
|
|
|
|
```sh
|
|
rm -rf graphql # this entire folder is generated
|
|
sea-orm-cli generate entity --output-dir graphql/src/entities --seaography
|
|
seaography-cli graphql graphql/src/entities $DATABASE_URL sea-orm-seaography-example
|
|
```
|
|
|
|
## Running the project
|
|
|
|
```sh
|
|
cd graphql
|
|
cargo run
|
|
```
|
|
|
|
## Run some queries
|
|
|
|
### Bakery -> Cake -> Baker
|
|
|
|
```graphql
|
|
{
|
|
bakery(pagination: { page: { limit: 10, page: 0 } }, orderBy: { name: ASC }) {
|
|
nodes {
|
|
name
|
|
cake {
|
|
nodes {
|
|
name
|
|
price
|
|
baker {
|
|
nodes {
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### List gluten-free cakes and know where to buy them
|
|
|
|
```graphql
|
|
{
|
|
cake(filters: { glutenFree: { eq: 1 } }) {
|
|
nodes {
|
|
name
|
|
price
|
|
glutenFree
|
|
bakery {
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|