Dgraph-Init
CLI tool for setting up dev instance of dgraph database
Getting Started
To create a db project using dgraph-init
, run any of the following command and answer the command prompt questions:
$ npx dgraph-init
AuthToken
you can find your defualt AuthToken inside the .env
fie named DEV_DGRAPH_GRAPHQL_KEY
Endpoints
- GraphQl -
localhost:8080/graphql
- lambda -
localhost:8686/graphql-worker
- admin -
localhost:8080/admin
- ratelUi -
localhost:8000
Prerequisites
- Make sure you have
docker
anddocker-compose
installed.
Managing DB instance
You can use npm db
to manage your docker containers related to your database.
db
is just a sorthand for docker-compose -f ./devCluster.yml --env-file .env
so you can use it as docker-compose.
-
db up
spins up containersalpha
,zero
,lambda
,ratel
as described indevCluster.yml
-
db stop
stops all the container -
db down
deletes all container -
db down -v
deletes all container along with all volumes
Adding GQL Schema
-
Paste your schema inside
schema/schema.gql
. -
Run
db-updateSchema
to add mew schema to db ` .
- NOTE: If you run
db-updateSchema
without adding your schema it will use defualt schema ,you can change it by repeating the steps mentioned before.
Using lambda
-
You can write your lambda code in typescript inside of
lambda/lambdas.ts
-
Compile your into javascript by running
db-lambdaBuild
-
when you restart your server using
db down
and thendb up
your new lambda will used
Admin Queries
- Write admin
query
ormutation
inside ofadmin/oprations
dirictiory, in a.gql
or.graphql
file, Make sure you have named the query in the file like this.
mutation updateGQLSchema($sch: String!) {
updateGQLSchema(input: { set: { schema: $sch } }) {
gqlSchema {
schema
generatedSchema
}
}
}
-
Make sure that your admin endpoint is live
-
Run
gen-gql
to genrate a typesafesdk
that contains all your queries and mutaions insideadmin/oprations
dirictiory -
you can import the
sdk
fromadmin/scripts/generatedTyps.ts
-
import
graphqlDgraphAdminRequestClient
which is a graphql-request Clint for admin endpoint, AuthToken is already attached to header when usinggraphqlDgraphAdminRequestClient
You can use the sdk
like this :
import { graphqlDgraphAdminRequestClient } from '../GQLDgraphAdminClient';
import { getSdk } from '`admin/scripts/generatedTyps';
const script =async () => {
const schema:string=`
type User {
id: ID
name: String
email: String @search(by: [hash])
emailVerified: DateTime
image: String
}
`
try {
const res = await getSdk(graphqlDgraphAdminRequestClient).updateGQLSchema({ sch: schema });
console.log('generatedSchema',res.updateGQLSchema);
} catch (error) {
console.error(error);
}
}
script()
Contributing
Feel free to contribute to the dgraph-init by creating a PR
License
Dgraph-init is licensed under the MIT License.