Prisma GraphQL APIReference

Raw Database Access

Overview

You can access the native API of the underlying database and perform custom operations directly against it.

Datamodel for examples on this page

All example subscriptions on this page are based on a Prisma service configured with this datamodel:

type User {
  id: ID! @unique
  name: String!
  createdAt: DateTime!
  updatedAt: DateTime!
}

Docker configuration

To enable raw database access, add rawAccess to your docker-compose.yml file.

version: '3'
services:
  prisma:
    image: prismagraphql/prisma:1.20
    restart: always
    ports:
      - '4466:4466'
    environment:
      PRISMA_CONFIG: |
        port: 4466
        databases:
          default:
            connector: postgres
            host: postgres
            port: 5432
            # port: 3306
            user: prisma
            password: prisma
            migrations: true
            rawAccess: true
  postgres:
    image: postgres:10.5
    restart: always
    ports:
      - '5432:5432'
    environment:
      POSTGRES_USER: prisma
      POSTGRES_PASSWORD: prisma
    volumes:
      - postgres:/var/lib/postgresql/data
volumes:
  postgres: ~

Examples

To create a new User through the native API, you can use the executeRaw mutation.

mutation {
  executeRaw(
    query: "INSERT INTO default$default."User" (Id, Name, "updatedAt","createdAt") VALUES ('cjnkpvm0b000d0b22j7csr04v', 'Abhi', '2018-10-22T19:54:47.606Z', '2018-10-22T19:54:47.606Z');"
  )
}

To find all Users

mutation {
  executeRaw(query: "SELECT * FROM default$default."User"")
}