2.5 KiB
Vulcanize GraphQL API
This application utilizes Postgraphile to expose GraphQL endpoints for exposure of the varied data that VulcanizeDB tracks.
Docker use
Note: currently this image is ~500MB large (unpacked)
Build the docker image in this directory. Start the GraphiQL
frontend by:
- Setting the env variables for the database connection:
DATABASE_HOST
,DATABASE_NAME
,DATABASE_USER
,DATABASE_PASSWORD
(and optionallyDATABASE_PORT
if running on non-standard port).- The specified user needs to be
superuser
on the vulcanizeDB database, so postgraphile can setup watch fixtures keeping track of live schema changes.
- The specified user needs to be
- To limit the amount of available queries in GraphQL, a restricted user can be used
for postgraphile introspection by adding env variables
GQ_USER
andGQ_PASSWORD
.- By doing
GRANT [SELECT | EXECUTE]
on tables/functions for this user, you can selectively assign things you want available in GraphQL. - You still need to pass in a superuser with
DATABASE_USER
&DATABASE_PASSWORD
for the postgraphile watch fixtures to work.
- By doing
- By default, postgraphile publishes the
public
schema. This can be expanded with for exampleGQ_SCHEMAS=public,maker
- Run the container (ex.
docker run -e DATABASE_HOST=localhost -e DATABASE_NAME=my_database -e DATABASE_USER=superuser -e DATABASE_PASSWORD=superuser -e GQ_USER=graphql -e GQ_PASSWORD=graphql -e GQ_SCHEMAS=public,anotherSchema -d my-postgraphile-image
) - GraphiQL frontend is available at
:3000/graphiql
GraphQL endpoint is available at:3000/graphql
By default, this build will expose only the "public" schema and will disable mutations - to change mutation behaviour, you can use an optional config file config.toml
and set the env var POSTGRAPHILE_CONFIG_PATH
to point to its location. Example toml
:
[database]
name = "vulcanize_public"
hostname = "localhost"
port = 5432
gq_schemas = ["public", "yourschema"]
gq_user = "graphql"
gq_password = "graphql"
disable_default_mutations = false
Building
This application assumes the use of the Yarn package manager. The use of npm may produce unexpected results.
Install dependencies with yarn
and execute yarn build
. The bundle produced by Webpack will be present in build/dist/
.
Running
Provide the built bundle to node as a runnable script: node ./build/dist/vulcanize-postgraphile-server.js
Testing
Tests are executed via Jasmine with a console reporter via the yarn test
task.