Prisma para TypeScript
PRISMA 3 / 4 / 5 / 6 COMPATIBLE

Gerador de Interfaces e Tipos TypeScript a partir do Esquema Prisma

Extraia modelos, enums, campos opcionais e relações do esquema Prisma em interfaces TypeScript puras sem necessidade do runtime do Prisma Client.

Predefinições:
Entrada do Esquema Prismaschema.prisma
/**
 * Standalone TypeScript Definitions
 * Generated from Prisma Schema without Prisma Client runtime
 * Generated via ToolsAA Prisma-to-TypeScript Engine
 */

// ==========================================
// Enums
// ==========================================

export enum Role {
  CUSTOMER = 'CUSTOMER',
  VENDOR = 'VENDOR',
  ADMIN = 'ADMIN',
}

export enum OrderStatus {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING',
  SHIPPED = 'SHIPPED',
  DELIVERED = 'DELIVERED',
  CANCELLED = 'CANCELLED',
}

// ==========================================
// Models & Types
// ==========================================

/**
 * User customer or merchant account
 * @table users
 * @id [id]
 */
export interface User {
  id: string; // @id @default(uuid()
  email: string; // @unique
  name?: string | null;
  role: Role; // @default(CUSTOMER)
  walletBalance: number; // @default(0.00)
  createdAt: Date; // @default(now()
  updatedAt: Date; // @updatedAt
  orders?: Order[]; // @relation
  profile?: UserProfile | null; // @relation
}

/**
 * @id [id]
 */
export interface UserProfile {
  id: string; // @id @default(cuid()
  userId: string; // @unique
  user?: User; // @relation
  phone?: string | null;
  address?: string | null;
  city?: string | null;
  country: string; // @default("US")
  metadata?: Record<string, unknown> | null;
}

/**
 * @table products
 * @id [id]
 */
export interface Product {
  id: number; // @id @default(autoincrement()
  sku: string; // @unique
  title: string;
  description?: string | null;
  price: number;
  inventory: number; // @default(0)
  isPublished: boolean; // @default(true)
  categoryId?: number | null;
  category?: Category | null; // @relation
  orderItems?: OrderItem[]; // @relation
  createdAt: Date; // @default(now()
}

/**
 * @id [id]
 */
export interface Category {
  id: number; // @id @default(autoincrement()
  slug: string; // @unique
  name: string;
  products?: Product[]; // @relation
}

/**
 * @table orders
 * @id [id]
 */
export interface Order {
  id: string; // @id @default(uuid()
  orderNumber: string; // @unique
  userId: string;
  user?: User; // @relation
  status: OrderStatus; // @default(PENDING)
  totalAmount: number;
  items?: OrderItem[]; // @relation
  createdAt: Date; // @default(now()
  updatedAt: Date; // @updatedAt
}

/**
 * @id [id]
 */
export interface OrderItem {
  id: number; // @id @default(autoincrement()
  orderId: string;
  order?: Order; // @relation
  productId: number;
  product?: Product; // @relation
  quantity: number; // @default(1)
  unitPrice: number;
}
Modelos Prisma
6

Modelos de dados e enums extraídos

Tipos TypeScript
116

Interfaces e utilitários gerados

Zero Dependências de Runtime
0 kB

Sem binários nem dependências do Prisma Client

Parser e Lexer no Navegador

Analisa modelos, enums, atributos compostos (@@id, @@unique, @@map), padrões e cascatas de relações diretamente no navegador sem Node.js ou Prisma CLI.

Privacidade 100% Local

As definições do seu esquema de banco de dados nunca saem do seu navegador. Zero uploads para servidores, rastreamento ou chamadas externas.

Exportação Universal TypeScript e Zod

Gere instantaneamente tipos limpos para aplicações web, funções serverless, monorepositórios e esquemas isórficos de validação Zod.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de Interfaces e Tipos TypeScript a partir do Prisma Schema — Guia de referência

Extraia modelos, enums, campos opcionais e relações do esquema Prisma em interfaces TypeScript puras sem necessidade do runtime do Prisma Client.

Parâmetros principais e controles

Estilo de declaraçãoEnum (interface | type)

Define se os modelos serão exportados como interfaces TypeScript ou apelidos de tipo (type aliases).

Padrão: interface
Incluir relaçõesBoolean

Determina se campos de relacionamento e listas associadas entre modelos serão incluídos nos tipos.

Padrão: true
Representação de DateTimeEnum (Date | string | Date | string)

Tipo TypeScript utilizado para campos escalares DateTime do Prisma.

Padrão: Date
Sintaxe de campos opcionaisEnum (nullable | optional | both)

Convenção para campos opcionais do Prisma (união com null, modificador '?' ou ambos).

Padrão: both
Formato de exportação de EnumEnum (enum | const-object | union)

Formato dos enums do Prisma como enum nativo do TypeScript, objeto const ou união de strings.

Padrão: enum

Dicas profissionais e melhores práticas

Zero dependência de runtime em monorepos

Compartilhe tipos de banco de dados diretamente com pacotes de frontend e edge sem carregar os binários pesados da biblioteca @prisma/client.

O modificador '?' no Prisma indica

O modificador '?' no Prisma indica NULL no banco. Utilize 'both' ou 'nullable' para manter T | null e evitar falhas de validação em contratos de API.

Criação ágil de DTOs planos

Desative os campos relacionais para gerar tipos limpos e equivalentes às tabelas individuais, ideais para formulários, payloads de criação e DTOs.

Problemas comuns e solução de problemas

Atributos específicos do Prisma (@@map, @@index) geram erros

Metadados como @@map, @@index e anotações nativas (@db.VarChar) são ignorados com segurança pelo gerador sem comprometer a extração das propriedades.

Relações circulares gerando recursão infinita no TypeScript

Quando modelos se referenciam mutuamente (ex.: User e Post), desative as relações ou declare tipos parciais para interromper o ciclo de resolução de tipos.

Mapeamento padrão de campos Json e Decimal

Por padrão, campos Json viram Record<string, unknown> e Decimal vira number | string, permitindo personalizações adicionais via generics.

Perguntas frequentes (FAQ)

Por que gerar tipos TypeScript puros em vez de usar os tipos do @prisma/client?▼

O Prisma Client embute motores de consulta nativos em Node.js e aumenta muito o tamanho final do bundle. Interfaces TypeScript puras têm zero impacto em tempo de execução e funcionam em navegadores, React Native e Edge Functions.

Como os tipos escalares do Prisma são convertidos para TypeScript?▼

String torna-se string, Int e Float tornam-se number, Boolean torna-se boolean, BigInt torna-se bigint, DateTime torna-se Date ou string, Decimal torna-se number | string e Json torna-se Record<string, unknown>.

Posso gerar uniões literais de strings em vez de enums TypeScript nativos?▼

Sim. Você pode configurar o gerador para emitir enums nativos, objetos 'as const' ou uniões diretas de tipos string (ex.: 'ADMIN' | 'USER').

Relações de 1 para 1, 1 para muitos e muitos para muitos são suportadas?▼

Sim. As relações podem ser completamente incluídas, definidas como opcionais ou removidas para atender a cenários de registros planos.

O meu arquivo schema.prisma é enviado para algum servidor externo?▼

Não. Todo o processo de interpretação e geração de código é executado 100% no navegador do usuário de forma local, preservando o sigilo total do seu esquema.

Ferramentas e utilitários relacionados

Todas as ferramentas →
Guia do Desenvolvedor: Gerador de Clientes API Axios TypeScript a partir de OpenAPI e SwaggerDesenvolvimento

Gere funções de cliente HTTP Axios limpas e com segurança de tipos rigorosa a partir de especificações OpenAPI 3.0 e Swagger JSON/YAML.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Cliente TypeScript com Fetch Nativo a partir de OpenAPI e SwaggerDesenvolvimento

Gere clientes de API em TypeScript com fetch nativo sem dependências externas, serialização de query string, cabeçalhos e tipagem completa.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de DDL SQL CREATE TABLE a partir de Esquemas Drizzle ORMDesenvolvimento

Converta definições pgTable, mysqlTable e sqliteTable do Drizzle ORM em scripts executáveis de migração SQL CREATE TABLE com máxima precisão.

Abrir ferramenta→
Guia do desenvolvedor para gerador de YAML do GitHub Actions CI/CDDesenvolvimento

Crie pipelines YAML de fluxo de trabalho do GitHub Actions prontos para produção para Node.js, Go, Python, builds Docker, testes automatizados e releases contínuas.

Abrir ferramenta→
Gerador de Configuração do Linux Logrotate (Retenção e Compactação)Desenvolvimento

Gere arquivos de configuração para /etc/logrotate.d/ prontos para produção com rotação diária/semanal, compactação gzip, dateext, limites de tamanho e scripts postrotate.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Configuração YAML do Ubuntu NetplanDesenvolvimento

Gere configurações YAML do Netplan para Ubuntu 20.04/22.04/24.04: IPs estáticos, DHCP, servidores DNS, rotas de gateway, bridges e bonds.

Abrir ferramenta→