Expand description

🧭 A GraphQL framework and code generator for SeaORM

crate docs build status

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.

Re-exports

pub use heck;
pub use itertools;
pub use seaography_derive as macros;

Structs

Enums

Functions

Type Definitions