Crate seaography
source · [−]Expand description
Seaography
Seaography is a GraphQL framework for building GraphQL resolvers using SeaORM entities. It ships with a CLI tool that can generate ready-to-compile Rust GraphQL servers from existing MySQL, Postgres and SQLite databases.
Features
- Relational query (1-to-1, 1-to-N)
- Pagination on query’s root entity
- Filter with operators (e.g. gt, lt, eq)
- Order by any column
(Right now there is no mutation, but it’s on our plan!)
Quick start - ready to serve in 3 minutes!
Install
cargo install seaography-cli
MySQL
Setup the sakila sample database.
cd examples/mysql
seaography-cli mysql://user:pw@localhost/sakila seaography-mysql-example .
cargo run
Go to http://localhost:8000/ and try out the following queries:
Fetch films and their actors
{
film(pagination: { limit: 10, page: 0 }, orderBy: { title: ASC }) {
data {
title
description
releaseYear
filmActor {
actor {
firstName
lastName
}
}
}
}
}
Fetch store and its employee
{
store(filters: { storeId: { eq: 1 } }) {
data {
storeId
address {
address
address2
}
staff {
firstName
lastName
}
}
}
}
Postgres
Setup the sakila sample database.
cd examples/postgres
seaography-cli postgres://user:pw@localhost/sakila seaography-postgres-example .
cargo run
SQLite
cd examples/sqlite
seaography-cli sqlite://chinook.db seaography-sqlite-example .
cargo run
Go to http://localhost:8000/ and try out the following query:
Fetch albums and their artists
{
albums(pagination: { limit: 10, page: 0 }) {
data {
title
artists {
name
}
}
}
}
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Seaography is a community driven project. We welcome you to participate, contribute and together build for Rust’s future.