O que é o Prisma e seus principais comandos

Prisma DB

Prisma DB

O Prisma é um conjunto de ferramentas que permite a você trabalhar de maneira mais eficiente com bancos de dados NoSQL, como o MongoDB. Ele inclui um conjunto de bibliotecas em diferentes linguagens de programação que permitem que você se conecte a um banco de dados e execute consultas de maneira rápida e fácil.

Uma das principais vantagens do Prisma é sua abstração de banco de dados. Ele fornece uma camada de abstração por cima do banco de dados subjacente, o que significa que você pode escrever consultas usando um tipado forte e uma sintaxe mais limpa, em vez de ter que lidar diretamente com o código SQL ou os comandos do MongoDB. Isso pode tornar o desenvolvimento de aplicações com bancos de dados mais rápido e menos propenso a erros.

Outra vantagem do Prisma é a capacidade de gerar automaticamente o código de acesso ao banco de dados. Ao definir o modelo de dados da sua aplicação em um arquivo Prisma, o Prisma pode gerar automaticamente o código de acesso ao banco de dados, o que significa que você não precisa escrever manualmente as consultas e os códigos de conexão. Isso pode economizar muito tempo e esforço durante o desenvolvimento da sua aplicação.

Aqui está um exemplo de como você poderia usar o Prisma para se conectar a um banco de dados MongoDB e inserir um novo documento em uma coleção:

Neste exemplo, estamos usando o Prisma para criar uma nova instância de PrismaClient e, em seguida, chamando o método create da propriedade user para inserir um novo documento na coleção de usuários. O documento é criado com os campos name e email, que são especificados no objeto de dados passado para o método create. Depois que o documento é criado, o objeto inteiro é exibido no console.

const { PrismaClient } = require('@prisma/client')

const prisma = new PrismaClient()

async function main() {
  const newUser = await prisma.user.create({
    data: {
      name: 'John',
      email: 'john@example.com',
    },
  })
  console.log(newUser)
}

main()
  .catch(e => console.error(e))
  .finally(async () => {
    await prisma.disconnect()
  })

Aqui vai uma lista com os principais comandos do Prisma DB

  1. prisma generate: gera o código de acesso ao banco de dados a partir do arquivo de modelo do Prisma.
  2. prisma introspect: examina o banco de dados e gera o arquivo de modelo do Prisma a partir dele.
  3. prisma migrate save: cria uma nova migração a partir do arquivo de modelo atual do Prisma.
  4. prisma migrate up: aplica as migrações pendentes ao banco de dados.
  5. prisma migrate down: reverte as últimas migrações aplicadas ao banco de dados.
  6. prisma reset: remove todos os dados do banco de dados e aplica novamente todas as migrações.
  7. prisma playground: inicia o playground do Prisma, um ambiente interativo para explorar e testar consultas.

Exemplos de códigos com o Prisma e Schema.Prisma

exemplo de um arquivo de modelo do Prisma que define um banco de dados para uma aplicação de gerenciamento de tarefas:

Copy codetype Task {
  id: ID! @id
  title: String!
  description: String
  completed: Boolean @default(value: false)
  createdAt: DateTime! @default(value: now())
  updatedAt: DateTime! @default(value: now())
}

Neste exemplo, estamos definindo uma coleção de documentos chamada Task com os seguintes campos:

  • id: um ID único gerado automaticamente para cada tarefa.
  • title: o título da tarefa (obrigatório).
  • description: uma descrição opcional da tarefa.
  • completed: um indicador de se a tarefa foi concluída ou não (opcional, com valor padrão de false).
  • createdAt: a data em que a tarefa foi criada (opcional, com valor padrão de “agora”).
  • updatedAt: a data em que a tarefa foi atualizada pela última vez (opcional, com valor padrão de “agora”).

Observe que estamos usando os decoradores @id, @default e ! para especificar propriedades adicionais dos campos. Por exemplo, o decorador @id indica que o campo id é a chave primária da coleção, enquanto o decorador

Modelo do Prisma que define um banco de dados com cinco entidades diferentes, três das quais estão vinculadas entre si:

type User {
  id: ID! @id
  name: String!
  email: String!
  password: String!
  tasks: [Task!]! @relation(name: "UserTasks")
}

type Task {
  id: ID! @id
  title: String!
  description: String
  completed: Boolean @default(value: false)
  createdAt: DateTime! @default(value: now())
  updatedAt: DateTime! @default(value: now())
  owner: User! @relation(name: "UserTasks")
}

type Project {
  id: ID! @id
  name: String!
  description: String
  tasks: [Task!]! @relation(name: "ProjectTasks")
}

type Tag {
  id: ID! @id
  name: String!
  tasks: [Task!]! @relation(name: "TagTasks")
}

type Comment {
  id: ID! @id
  content: String!
  task: Task! @relation(name: "TaskComments")
  author: User! @

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Abrir bate-papo
1
Olá, para iniciar seu atendimento clique aqui e envie uma mensagem pelo Whats App! Obrigado :)