GraphQL → Prisma
Suite de ingeniería de base de datos fullstack y Prisma ORM

Convertidor de GraphQL SDL a Prisma Schema (Modelos y Relaciones)

Traduzca tipos de objetos, enumeraciones y directivas de GraphQL SDL a modelos limpios y relaciones del ORM Prisma.

Privacidad 100% del lado del cliente
Cero transmisión al servidor
Preajustes:
Opciones de Prisma ORM
postgresql•CUID
Definición de Esquema GraphQL (SDL)
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

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

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

enum Role {
  OWNER
  ADMIN
  MEMBER
  VIEWER
}

enum SubscriptionStatus {
  TRIALING
  ACTIVE
  PAST_DUE
  CANCELED
}

model User {
  id String @id @default(cuid())
  email String @unique
  name String?
  avatarUrl String?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  memberships Membership[]
  ownedWorkspaces Workspace[]
  auditLogs AuditLog[]
}

model Workspace {
  id String @id @default(cuid())
  slug String @unique
  name String
  ownerId String
  subscription Subscription?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  owner User @relation(fields: [ownerId], references: [id])
  memberships Membership[]
  projects Project[]
}

model Membership {
  id String @id @default(cuid())
  role Role
  userId String
  workspaceId String
  createdAt DateTime @default(now())

  user User @relation(fields: [userId], references: [id])
  workspace Workspace @relation(fields: [workspaceId], references: [id])
}

model Invoice {
  id String @id @default(cuid())
  subscription Subscription
  subscriptionId String
  amountDue Float
  amountPaid Float
  paid Boolean
  pdfUrl String?
  createdAt DateTime @default(now())
}

model Project {
  id String @id @default(cuid())
  workspaceId String
  name String
  description String?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  workspace Workspace @relation(fields: [workspaceId], references: [id])
}

model AuditLog {
  id String @id @default(cuid())
  userId String
  action String
  ipAddress String?
  createdAt DateTime @default(now())

  user User @relation(fields: [userId], references: [id])
}
Tipos GraphQL Procesados8 DefinicionesTipos de objetos, enumeraciones e interfaces detectados
Modelos Prisma Generados6 Modelos & 10 RelacionesModelos ORM con claves foráneas relacionales completas
Sin Transmisión al Servidor100% Client-SideCompilación 100% en el navegador con privacidad total

Procesamiento Local

Ejecución de alto rendimiento directamente en la memoria del navegador.

Privacidad Total

Ningún dato de esquema sale de su dispositivo hacia servidores externos.

Listo para Producción

Salida limpia lista para ser utilizada de inmediato con Prisma ORM.

Referencia técnica y guía de arquitectura

Guía de desarrollo del convertidor de GraphQL SDL a esquema de Prisma — Guía de referencia

Traduzca tipos de objetos, enumeraciones y directivas de GraphQL SDL a modelos limpios y relaciones del ORM Prisma.

Parámetros clave y controles

Estrategia de IDEnum (cuid | uuid | autoincrement)

Define el atributo generador de clave primaria en Prisma (@id @default(cuid()), uuid() o autoincrement()).

Por defecto: cuid()
Modo de relaciones explícitasBoolean (explicit | inferred)

Genera automáticamente claves foráneas explícitas y directivas @relation(fields: [...], references: [...]) entre modelos coincidentes.

Por defecto: explicit
Mapeo de directivasBoolean (enabled | disabled)

Convierte directivas de GraphQL SDL como @map, @unique y @default en atributos de esquema Prisma.

Por defecto: enabled
Mapeo de escalares DateTimeString (DateTime | Timestamp | Int)

Mapea escalares personalizados de GraphQL como DateTime a tipos de datos nativos de Prisma.

Por defecto: DateTime

Consejos profesionales y mejores prácticas

Emparejamiento bidireccional automático

Al definir relaciones 1:N o M:N en GraphQL SDL, el convertidor inyecta automáticamente los campos inversos y claves foráneas necesarios para cumplir con las reglas estrictas de Prisma.

Los campos con '!' en GraphQL SDL se

Los campos con '!' en GraphQL SDL se convierten en campos requeridos en Prisma, mientras que los campos sin exclamación se marcan como opcionales con el modificador '?'.

Preservación de enumeraciones nativas

Las declaraciones 'enum' de GraphQL se convierten directamente en bloques 'enum' de Prisma, compatibles con enumeraciones nativas de bases de datos como PostgreSQL y MySQL.

Errores comunes y solución de problemas

Falta de campo de relación inversa o clave foránea

Prisma requiere que ambos lados de una relación estén declarados. Si el SDL solo contiene la relación en un sentido (ej. author: User), el convertidor crea automáticamente el campo inverso (posts: Post[]) y la clave foránea (authorId).

Escalares personalizados de GraphQL no reconocidos (JSON, DateTime, UUID)

Declare los escalares al inicio del SDL con 'scalar DateTime' o defina la equivalencia de tipos en la configuración para evitar que se interpreten por defecto como String.

Preguntas frecuentes (FAQ)

¿Cómo maneja el convertidor las relaciones de muchos a muchos (M:N)?▼

Las relaciones donde ambos modelos se referencian como listas (ej. tags: [Tag!]! y posts: [Post!]!) se traducen a la sintaxis de relación implícita de Prisma, permitiendo que Prisma Client gestione la tabla intermedia automáticamente.

¿Qué ocurre con los tipos Query, Mutation y Subscription?▼

El esquema de Prisma se enfoca exclusivamente en la persistencia de datos. Las operaciones raíz de GraphQL (Query, Mutation, Subscription) y los tipos input se descartan automáticamente para conservar únicamente entidades de base de datos.

¿Es posible mapear nombres de tablas y columnas con @map y @@map?▼

Sí, las directivas del SDL o convenciones de nomenclatura personalizadas pueden mapearse a atributos @map("columna") y @@map("tabla") para mantener la compatibilidad con esquemas existentes.

¿Mis esquemas de GraphQL se envían a algún servidor externo?▼

No. Toda la tokenización, análisis sintáctico y generación del esquema Prisma se ejecuta localmente en el navegador, garantizando total privacidad y seguridad.

Herramientas y utilidades relacionadas

Todas las herramientas →
Guía para desarrolladores: Generador de entidades TypeORM a partir de SQL DDL (Entidades TypeScript)Desarrollo

Convierta sentencias DDL SQL CREATE TABLE en clases de entidad TypeScript TypeORM limpias con decoradores @Column, @PrimaryGeneratedColumn, relaciones e índices.

Abrir herramienta→
Guía para Desarrolladores del Conversor de SQL CREATE TABLE DDL a Esquema ZodDesarrollo

Traduzca esquemas de tablas SQL, tipos de datos, restricciones y columnas anulables a esquemas de objetos Zod fuertemente tipados en TypeScript.

Abrir herramienta→
Conversor de Docker Compose a Manifiestos de Kubernetes (Compose a K8s)Desarrollo

Convierte servicios, variables de entorno, puertos y volúmenes de docker-compose.yml en YAML de Kubernetes Deployment y Service.

Abrir herramienta→
Guía de Desarrollo del Conversor de JSON a Variables de Entorno .env (Aplanar y Exportar)Desarrollo

Aplana cargas útiles JSON anidadas en configuraciones .env en mayúsculas SNAKE_CASE con delimitadores y prefijos personalizables.

Abrir herramienta→
Generador de Esquemas SQL DDL a Drizzle ORM (PostgreSQL, MySQL, SQLite) - Guía de DesarrolladorDesarrollo

Convierte sentencias SQL CREATE TABLE en esquemas fuertemente tipados de Drizzle ORM con definiciones pgTable, mysqlTable y sqliteTable.

Abrir herramienta→
Guía del Desarrollador: Generador de Esquemas Valibot desde JSON (Validación Modular TypeScript)Desarrollo

Transforme datos JSON en definiciones de esquemas Valibot ligeras y con soporte de tree-shaking mediante v.object, v.string, v.number y validadores de arrays.

Abrir herramienta→