Prisma
Para criar uma API RESTful com Prisma, GraphQL, PostgreSQL e Nest.js, siga estas etapas:
Passo 1: Configuração Inicial
Certifique-se de que você tenha o Node.js e o PostgreSQL instalados em seu sistema. Em seguida, crie um novo projeto Nest.js usando o Nest CLI:
npx @nestjs/cli new nest-graphql-prisma
cd nest-graphql-prisma
Passo 2: Instale as Dependências
Instale as dependências necessárias, incluindo o Prisma, GraphQL e outras bibliotecas relacionadas:
npm install @nestjs/graphql graphql-tools graphql apollo-server-express @prisma/client prisma
Passo 3: Configurar o Prisma
Configure o Prisma para se conectar ao PostgreSQL. Execute o comando para criar um arquivo schema.prisma
na pasta prisma
e defina o esquema do banco de dados:
npx prisma init
Edite o arquivo schema.prisma
de acordo com suas necessidades para definir os modelos de dados e configurações de banco de dados.
Passo 4: Criar os Modelos GraphQL
Crie os modelos GraphQL para definir como os dados serão expostos via GraphQL. Você pode criar um arquivo, por exemplo, task.graphql
no diretório src
:
# src/task.graphql
type Task {
id: Int
title: String
description: String
done: Boolean
}
input CreateTaskInput {
title: String!
description: String
}
Passo 5: Criar o Resolver GraphQL
Crie um resolver GraphQL que irá lidar com as consultas e mutações. Você pode criar um arquivo, por exemplo, tasks.resolver.ts
no diretório src
:
// src/tasks.resolver.ts
import { Resolver, Query, Mutation, Args } from '@nestjs/graphql';
import { PrismaService } from './prisma.service';
import { Task, CreateTaskInput } from './task.graphql';
@Resolver()
export class TasksResolver {
constructor(private readonly prismaService: PrismaService) {}
@Query(() => [Task])
async tasks(): Promise<Task[]> {
return this.prismaService.task.findMany();
}
@Mutation(() => Task)
async createTask(@Args('input') input: CreateTaskInput): Promise<Task> {
return this.prismaService.task.create({
data: input,
});
}
}
Passo 6: Configurar o Prisma Service
Crie um serviço para interagir com o Prisma e o banco de dados. Crie um arquivo, por exemplo, prisma.service.ts
, no diretório src
:
// src/prisma.service.ts
import { Injectable } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService {
constructor() {
this.prisma = new PrismaClient();
}
}
Passo 7: Configurar o Apollo Server
Configure o Apollo Server Express para criar uma instância do GraphQL. Você pode fazer isso no arquivo main.ts
:
import { ApolloServer } from 'apollo-server-express';
const server = new ApolloServer({
typeDefs, // Defina seu esquema GraphQL aqui
resolvers, // Importe seus resolvers
context: ({ req }) => ({ req }),
});
server.applyMiddleware({ app });
// Resto do código do main.ts
Passo 8: Definir o Esquema GraphQL
No arquivo main.ts
, importe e defina seus tipos GraphQL e resolvers:
import { typeDefs } from './src/task.graphql'; // Importe o esquema GraphQL
import { resolvers } from './src/tasks.resolver'; // Importe os resolvers
Passo 9: Executar o Servidor
Agora você pode executar o servidor Nest.js:
npm run start
Acesse o GraphQL Playground em http://localhost:3000/graphql
e comece a testar suas consultas e mutações.
Isso é uma visão geral de como criar uma API RESTful com Prisma, GraphQL, PostgreSQL e Nest.js.