Goals
On this page, you will learn how to:
- Install the Prisma CLI
- Set up Prisma using Docker
- Configure your Prisma API
- Generate the Prisma client
- Read and write data using the Prisma client
Prisma 1 is currently in maintenance mode. We recommend to get started with Prisma 2 instead.
Install the Prisma CLI
The Prisma CLI is used for various Prisma workflows. You can install it using Homebrew or NPM:
brew tap prisma/prisma brew install prismaCopy
Install Docker
To use Prisma locally, you need to have Docker installed on your machine. If you don't have Docker yet, you can download the Docker Community Edition for your operating system here.
Don't want to use Docker? Check out the new Prisma 2 which removes the need to host the Prisma server using Docker.
Set up and connect Prisma with a database
Create new directory
mkdir hello-world cd hello-worldCopy
Create Docker Compose file
To launch Prisma on your machine, you need a Docker Compose file that configures Prisma and specifies the database it can connect to.
touch docker-compose.ymlCopy
Add Prisma and database Docker images
Paste the following contents into the Docker Compose file you just created:
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 mysql: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: prisma volumes: - mysql:/var/lib/mysql volumes: mysql: ~Copy
You can switch between MySQL, PostgreSQL and MongoDB by using the tabs above the code block.
Launch Prisma and the connected database
To start Prisma and launch the connected database, run the following command:
docker-compose up -dCopy
Prisma is now connected to a local database and runs on http://localhost:4466.
The Prisma server is currently unprotected, meaning everyone with access to its endpoint can send arbitrary requests to it. To secure the Prisma server, you need to set the managementApiSecret property in your Docker Compose file when deploying the server.
When using the Prisma CLI, you then need to set the PRISMA_MANAGEMENT_API_SECRET to the same value so that the CLI can authenticate against the secured server. Learn more here.
Configure your Prisma API
To bootstrap the configuration files for your Prisma client run the following command:
prisma1 init --endpoint http://localhost:4466Copy
The
endpointneeds to match the URL of a running Prisma server.
Deploy the Prisma datamodel
The prisma1 init command created the minimal setup needed to deploy the Prisma datamodel: prisma.yml and datamodel.prisma.
The MongoDB connector uses a new datamodel format than the currently supported SQL databases. The datamodel and prisma.yml need to be configured specifically for MongoDB.
Add the databaseType property to prisma.yml so that it looks as follows:
endpoint: http://localhost:4466 datamodel: datamodel.prisma databaseType: documentCopy
Now adjust datamodel.prisma to use the new directives:
type User {
id: ID! @id
name: String!
}
With these configuration files, you can now deploy the Prisma API:
prisma1 deployCopy
Congratulations, you have successfully set up Prisma. You can now start using the Prisma client to talk to your database from code.
View and edit your data in Prisma Admin
If you want to view and edit the data in your database, you can use Prisma Admin. To access Prisma Admin, you need to append /_admin to your Prisma endpoint, for example: http://localhost:4466/_admin.
Generate your Prisma client
The Prisma client is a custom, auto-generated library that connects to your Prisma API. Append the following lines to the end of your prisma.yml:
generate: - generator: go-client output: ./generated/prisma-client/Copy
Now generate the client with this command:
prisma1 generateCopy
The CLI now stored your Prisma client inside the ./generated/prisma-client/ directory as specified in prisma.yml.
Prepare Go application
touch index.goCopy
You'll be using dep for dependency management in this tutorial. Run the following command to create the required setup:
dep initCopy
Great, you're now ready to write some code and talk to your database programmatically!
Read and write data using the Prisma client
Add the following code in index.go:
package main import ( "context" "fmt" prisma "hello-world/generated/prisma-client" ) func main() { client := prisma.New(nil) ctx := context.TODO() // Create a new user name := "Alice" newUser, err := client.CreateUser(prisma.UserCreateInput{ Name: name, }).Exec(ctx) if err != nil { panic(err) } fmt.Printf("Created new user: %+v\n", newUser) users, err := client.Users(nil).Exec(ctx) if err != nil { panic(err) } fmt.Printf("%+v\n", users) }Copy
Before executing the script, you need to ensure all dependencies are available. Run the following command:
dep ensureCopy
Now execute the script with the following command:
go run index.goCopy
Whenever you run the script with that command, a new user record is created in the database (because of the call to createUser).
Feel free to play around with the Prisma client API and try out some of the following operations by adding the following code snippets to the file (at the end of the main function) and re-executing the script:
id := "__USER_ID__" userById, err := client.User(prisma.UserWhereUniqueInput{ ID: &id, }).Exec(ctx)Copy
In some snippets, you need to replace the
__USER__ID__placeholder with the ID of an actual user.