DEV Community

Oswaldo
Oswaldo

Posted on

Como trabajar con Prisma ORM

En Prisma ORM, las migraciones se manejan para mantener sincronizada la estructura de la base de datos con los modelos definidos en el archivo schema.prisma. Prisma ofrece un flujo de trabajo basado en migraciones controladas para aplicar cambios de manera segura y controlada en tu base de datos.

Pasos para manejar migraciones en Prisma:

1. Definir el modelo en el archivo schema.prisma

El archivo schema.prismaes donde defines tus modelos, relaciones y el proveedor de base de datos.

Ejemplo básico de un archivo schema.prisma:

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model User {
  id    Int     @id @default(autoincrement())
  name  String
  email String  @unique
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User    @relation(fields: [authorId], references: [id])
  authorId  Int
}
Enter fullscreen mode Exit fullscreen mode

En este ejemplo, se definen los modelos User y Post, con una relación entre ellos.

2. Crear una migración

Cuando realizas cambios en el esquema, como añadir, modificar o eliminar campos o relaciones, debes crear una nueva migración que Prisma aplicará a la base de datos.

Para crear una migración, se utiliza el siguiente comando:

npx prisma migrate dev --name nombre-de-la-migracion
Enter fullscreen mode Exit fullscreen mode
  • El parámetro --name te permite darle un nombre descriptivo a la migración (por ejemplo, add-post-model).
  • El comando genera un archivo de migración SQL basado en los cambios del archivo schema.prisma y lo aplica a la base de datos de desarrollo.

Prisma guardará este archivo de migración en una carpeta prisma/migrations, donde mantendrá el historial de cambios.

3. Revisar y aplicar migraciones en producción

En un entorno de producción, las migraciones no se aplican automáticamente como en desarrollo. En su lugar, utilizas el siguiente comando para aplicar las migraciones a la base de datos de producción:

npx prisma migrate deploy
Enter fullscreen mode Exit fullscreen mode

Esto asegurará que las migraciones sean aplicadas de forma segura en un entorno de producción.

4. Verificar el estado de las migraciones

Puedes verificar qué migraciones han sido aplicadas y el estado de la base de datos usando:

npx prisma migrate status
Enter fullscreen mode Exit fullscreen mode

Esto te mostrará el estado actual de las migraciones, si hay migraciones pendientes, y si la base de datos está sincronizada con el esquema actual.

5. Revertir migraciones

Si necesitas deshacer una migración en desarrollo, puedes utilizar el siguiente comando para regresar a una migración anterior:

npx prisma migrate reset
Enter fullscreen mode Exit fullscreen mode

Este comando eliminará toda la base de datos y aplicará nuevamente todas las migraciones desde el principio. Solo se recomienda para entornos de desarrollo, ya que en producción, generalmente no se eliminan datos.

6. Modificar migraciones

Si aún no has desplegado una migración a producción y necesitas modificarla, puedes editar el archivo SQL generado en prisma/migrations, o puedes simplemente eliminar la migración y volver a generar una nueva con los cambios adecuados.

Flujo típico de trabajo con Prisma y migraciones:

  1. Modificar el modelo en el archivo schema.prisma.
  2. Crear la migración con npx prisma migrate dev --name nombre-de-la-migracion.
  3. Aplicar migraciones en producción con npx prisma migrate deploy.
  4. Actualizar el cliente Prisma para reflejar los cambios en la base de datos en el código:
npx prisma generate
Enter fullscreen mode Exit fullscreen mode

Comandos clave:

  • npx prisma migrate dev --name nombre: Crea y aplica migraciones en desarrollo.
  • npx prisma migrate deploy: Aplica las migraciones en producción.
  • npx prisma migrate status: Verifica el estado de las migraciones.
  • npx prisma migrate reset: Restablece la base de datos y aplica las migraciones nuevamente (solo en desarrollo).

Prisma gestiona las migraciones de una manera controlada y versionada, lo que permite mantener un historial de cambios en tu base de datos, facilitando tanto el desarrollo como la puesta en producción de cambios en la estructura de tus datos.

Top comments (0)