d92d37f715 | ||
---|---|---|
prisma | ||
src | ||
.gitignore | ||
README.md | ||
docker-compose.yml | ||
package-lock.json | ||
package.json | ||
tsconfig.json |
README.md
GraphQL Server Example
This example shows how to implement a GraphQL server with TypeScript based on Prisma, graphql-yoga and GraphQL Nexus.
How to use
1. Download example & install dependencies
Clone the repository:
git clone git@github.com:prisma/prisma-examples.git
Install Node dependencies:
cd prisma-examples/typescript/graphql
npm install
2. Install the Prisma CLI
To run the example, you need the Prisma CLI. Please install it via NPM or using another method:
npm install -g prisma
3. Set up database & deploy Prisma datamodel
For this example, you'll use a free demo database (AWS Aurora) hosted in Prisma Cloud. To set up your database, run:
prisma deploy
Then, follow these steps in the interactive CLI wizard:
- Select Demo server
- Authenticate with Prisma Cloud in your browser (if necessary)
- Back in your terminal, confirm all suggested values
Alternative: Run Prisma locally via Docker
- Ensure you have Docker installed on your machine. If not, you can get it from here.
- Create
docker-compose.yml
for MySQL (see here for Postgres):version: '3' services: prisma: image: prismagraphql/prisma:1.34 restart: always ports: - "4466:4466" environment: PRISMA_CONFIG: | port: 4466 databases: default: connector: mysql host: mysql port: 3306 user: root password: prisma migrations: true mysql: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: prisma volumes: - mysql:/var/lib/mysql volumes: mysql:
- Run
docker-compose up -d
- Set the
endpoint
inprisma.yml
tohttp://localhost:4466
- Run
prisma deploy
You can now use Prisma Admin to view and edit your data by appending /_admin
to your Prisma endpoint.
4. Start the GraphQL server
Launch your GraphQL server with this command:
npm run start
Navigate to http://localhost:4000 in your browser to explore the API of your GraphQL server in a GraphQL Playground.
5. Using the GraphQL API
The schema that specifies the API operations of your GraphQL server is defined in ./src/schema.graphql
. Below are a number of operations that you can send to the API using the GraphQL Playground.
Feel free to adjust any operation by adding or removing fields. The GraphQL Playground helps you with its auto-completion and query validation features.
Retrieve all published posts and their authors
query {
feed {
id
title
content
published
author {
id
name
email
}
}
}
See more API operations
Create a new user
mutation {
signupUser(
name: "Sarah"
email: "sarah@prisma.io"
) {
id
}
}
Create a new draft
mutation {
createDraft(
title: "Join the Prisma Slack"
content: "https://slack.prisma.io"
authorEmail: "alice@prisma.io"
) {
id
published
}
}
Publish an existing draft
mutation {
publish(id: "__POST_ID__") {
id
published
}
}
Note: You need to replace the
__POST_ID__
-placeholder with an actualid
from aPost
item. You can find one e.g. using thefilterPosts
-query.
Search for posts with a specific title or content
{
filterPosts(searchString: "graphql") {
id
title
content
published
author {
id
name
email
}
}
}
Retrieve a single post
{
post(id: "__POST_ID__") {
id
title
content
published
author {
id
name
email
}
}
}
Note: You need to replace the
__POST_ID__
-placeholder with an actualid
from aPost
item. You can find one e.g. using thefilterPosts
-query.
Delete a post
mutation {
deletePost(id: "__POST_ID__") {
id
}
}
Note: You need to replace the
__POST_ID__
-placeholder with an actualid
from aPost
item. You can find one e.g. using thefilterPosts
-query.
6. Changing the GraphQL schema
To make changes to the GraphQL schema, you need to manipulate the Query
and Mutation
types that are defined in index.ts
.
Note that the start
script also starts a development server that automatically updates your schema every time you save a file. This way, the auto-generated GraphQL schema updates whenever you make changes in to the Query
or Mutation
types inside your TypeScript code.