Graphql backend for cindy-next.
It is based on async-graphql, actix-web, diesel, powered by Rust.
- Dynamic query building with
diesel(with support for complex filtering) - Graphql interface
- Realtime Subscriptions
- Authorization
- Access control
- Relay-like pagination (not included)
-
Rust, first of all. Follow the instructions on rustup.rs if you don't have one. The minimum supported version is v1.46.
# Install rustup curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Install latest rust and cargo rustup install nightly
-
Postgresql ≥ 12, and its dev library.
# Debian-based OS sudo apt-get install postgresql libpq-dev # Arch linux sudo pacman -S postgresql postgresql-libs
-
Diesel client. You need to compile this yourself
cargo install diesel_cli --no-default-features --features "postgres" -
just (optional), to run recipes defined in
justfile.cargo install just
Basically only two binaries (cindy-next-rust and diesel) are required in the server. Currently we do not provide compiled binaries. It is recommended to compile them yourself and push the binaries to the server.
-
Clone the repo with
git clone https://github.com/heyrict/cindy-next-rust. -
Create an empty database for Cindy with
sudo -u postgres psqlCREATE ROLE cindy LOGIN PASSWORD 'cindy-password'; ALTER ROLE cindy SET client_encoding TO 'utf8'; ALTER ROLE cindy SET timezone TO 'UTC'; CREATE DATABASE cindy-db; GRANT ALL ON DATABASE cindy-db TO cindy; \c cindy-db; GRANT ALL ON schema public to cindy; CREATE EXTENSION pgcrypto; CREATE EXTENSION "uuid-ossp"; -
Copy
.env.exampleto.envand edit it based on your flavor.Make sure
DATABASE_URLin the config file points to your postgres instance. If you followed the steps above, it ispostgres://cindy:cindy-password@127.0.0.1:5432/cindy-db. -
Setup the database with
diesel database setup && diesel migration run. -
Run
cargo run --releaseor./path/to/cindy-next-rustif you have a compiled binary to start the server. For the former command, once compiled, it can be found in./target/release/cindy-next-rust. -
Create an admin account with
just signup. -
Load initial data to the database with
psql cindy-db < setup/jp/initdb.up.sql.