Agenda

  1. GraphQL
  2. GraphQL servers and Frontend
  3. GraphQL con Prisma

Que es GraphQL

  • New API standard desarrollada por Facebook
  • Type system and query language
  • Core primitives: Query, Mutation and Suscriptions

Por que usar GraphQL

  • Schema fuertemente tipado para nuestra API
  • Autogenera la documentacion propia
  • Queries extraen la data que necesitas
  • Muchas herramientas y gran comunidad

Demo

Desde graphIQL

Parts of Graphql server

  • Api definitios: GraphQL Schema
  • Implementacion: resolvers functions
  • Setup: Framework, Network(http), Middleware

CRUD for User type

type User {
    id: ID!
    name: String!
}

type Query {
    user(id: ID!): User
    users: [Users!]!
}

type Mutation {
    createUser(name: String!): User!
    updateUser(id: ID!, name: String!): User
    deleteUser(id: ID!): User
}

Resolvers

  • Concretan la implementacion del API
  • Un resolver por campo en el SDL
  • Query invocan todos los resolver para los campos

CRUD for User type

type User {
    id: ID!
    name: String!
}

type Query {
    user(id: ID!): User
    users: [Users!]!
}

type Mutation {
    createUser(name: String!): User!
    updateUser(id: ID!, name: String!): User
    deleteUser(id: ID!): User
}
const resolvers = {
  Query: {
    user: (root, args) => db.getUser(args.id),
    users: () => db.getUsers(), 
  },
  Mutation: {
    createUser: (root, args) =>
      db.createUser(args.name) 
    updateUser: (root, args) =>
      db.updateUser(args.id, args.name)
    deleteUser: (root, args) =>
      db.deleteUser(args.id)
  }
};

¿Que es prisma?

  • Capa de acceso a base de datos fuertemente tipado
  • Auto genera el cliente de base de datos type-safe
  • Data modeling and migrations

Prisma + GraphQL

  • Performant query resolution. Batching and caching
  • CRUDS and real-time operations
  • End-to-end type-safety (Database, server and frontend)

GraphQL + Prisma

By Miguel Cast

GraphQL + Prisma

  • 156