Conversor de SQL para interfaces TypeScript
Converta definições compatíveis de CREATE TABLE do PostgreSQL em interfaces TypeScript para linhas, com nulabilidade explícita e representação exata de valores numéricos.
Como funciona
Cole uma ou mais instruções CREATE TABLE do PostgreSQL. O analisador aceita IF NOT EXISTS opcional, nomes de esquema, identificadores entre aspas, tipos integrados, precisão, valores padrão, restrições de nulabilidade, chaves primárias e restrições comuns.
Revise a interface gerada para cada tabela. Colunas nullable continuam como propriedades obrigatórias com tipo de valor `| null`. A opção JSDoc acrescenta valores padrão tratados e notas de chave primária.
Compare a saída com a estrutura das consultas e a configuração do driver. Uma consulta que seleciona somente algumas colunas tem estrutura diferente da linha completa representada aqui.
Use a saída como ponto de partida para os tipos da aplicação. Acrescente validação em tempo de execução e ajuste no projeto as representações específicas do driver.
Passo a passo
- Cole definições compatíveis de tabelas PostgreSQL
- Revise propriedades de linha e tipos de valor
- Confira consultas e representações do driver
Exemplo prático
Entrada de exemplo: CREATE TABLE finance.positions (id bigint PRIMARY KEY, ticker varchar(12) NOT NULL, shares numeric(12, 4) NOT NULL, note text DEFAULT 'created, reviewed', metadata jsonb);
O tipo de linha gerado inclui id e ticker como strings obrigatórias, shares como string obrigatória, note como string nullable obrigatória e metadata como valor unknown nullable obrigatório. bigint e numeric usam strings para não presumir que números JavaScript preservem valores exatos.
Quando usar este conversor
Use este conversor para transformar definições compatíveis de tabelas PostgreSQL em um tipo inicial para linhas completas. Ele mantém valores nullable distintos de propriedades ausentes.
Revise os mapeamentos de tipos conforme o driver e os resultados das consultas antes de usar a interface em uma aplicação.
Erros comuns
Não trate uma coluna nullable como propriedade opcional. Uma linha consultada inclui a coluna, embora o valor possa ser null.
Não presuma que o driver retorna numeric e bigint como strings. Configure ou converta os resultados para corresponder à interface gerada.
Regras de análise e tipos
Para cada tabela compatível, separe as definições por vírgulas fora de parênteses e valores entre aspas. Mapeie o tipo SQL de cada coluna para um tipo TypeScript. Emita uma propriedade obrigatória e acrescente `| null` quando a coluna aceitar null. Colunas de chave primária não aceitam null. Valores padrão servem apenas como documentação.
Esta ferramenta gera interfaces de linhas a partir de um subconjunto de CREATE TABLE do PostgreSQL. Valores numeric e bigint exatos são representados como strings; a aplicação deve configurar o driver ou converter os resultados. Tipos SQL desconhecidos são mapeados para unknown. JSON e JSONB também são mapeados para unknown.
Escopo e limites
Este analisador cobre um subconjunto de CREATE TABLE do PostgreSQL, não toda a linguagem SQL. Aceita definições básicas, nomes com esquema e entre aspas, expressões aninhadas, restrições comuns, valores padrão e chaves primárias. Instruções ou opções não aceitas retornam erro sem interfaces parciais. Não aceita ALTER TABLE, views, CREATE TABLE AS, partições, herança nem toda a gramática do PostgreSQL. Valores numeric e bigint são emitidos como strings e exigem configuração ou conversão do driver. Datas são representadas como strings. Tipos desconhecidos são mapeados para unknown. As propriedades representam linhas completas, não campos opcionais de inserção nem resultados parciais de consulta. Os tipos gerados não validam dados em tempo de execução. A entrada aceita até 100.000 caracteres.
Termos principais
- Interface de linha
- Uma interface de linha do banco descreve as propriedades retornadas por uma linha completa, inclusive valores nullable.
- Coluna nullable
- Uma coluna nullable aceita o valor null. Isso não significa que a propriedade esteja ausente em uma linha completa.
- Chave primária
- Uma chave primária identifica linhas sem repetição e suas colunas não podem conter null no PostgreSQL.
Tarefas relacionadas
Converta definições compatíveis de tabelas PostgreSQL em tipos TypeScript para linhas. Para descrever requisições e respostas HTTP, use uma ferramenta separada de esquemas de API.
Este conversor se concentra na estrutura das linhas do banco de dados. Ele não cria validação em tempo de execução nem funções de acesso ao banco.
Perguntas frequentes
Quais instruções SQL ele consegue ler?
O analisador lê instruções CREATE TABLE compatíveis e separa definições de colunas e restrições somente no nível superior. Mantém juntas as vírgulas de precisão dos tipos, expressões aninhadas e valores padrão entre aspas. Usa nomes e tipos de colunas, nulabilidade, valores padrão e chaves primárias para criar uma interface por tabela.
Como são representadas colunas nullable e chaves primárias?
Uma coluna nullable continua presente em uma linha consultada, então a propriedade é obrigatória e seu tipo inclui null. Uma coluna NOT NULL e uma chave primária não incluem null. Um valor padrão afeta inserções, não a presença da propriedade em uma linha consultada.
Como os tipos SQL são mapeados para TypeScript?
Tipos de inteiros pequenos e ponto flutuante são mapeados para number. bigint, numeric, decimal e money são mapeados para string para preservar valores exatos. Configure o driver do banco para retornar esses valores como strings ou converta esses valores antes de usar o tipo gerado. JSON e JSONB são mapeados para unknown porque JSON pode conter escalar, array, objeto ou null. Tipos de data e hora são mapeados para string.
Quais sintaxes ficam fora do subconjunto aceito?
O analisador aceita um subconjunto de CREATE TABLE do PostgreSQL com IF NOT EXISTS opcional, esquema opcional, identificadores entre aspas, colunas, restrições comuns, valores padrão e chaves primárias. Rejeita opções finais e instruções alheias em vez de retornar uma saída parcial. Não analisa ALTER TABLE, views, CREATE TABLE AS, partições, herança nem todas as formas de tipos e restrições do PostgreSQL.
O que a opção JSDoc acrescenta?
Quando ativado, JSDoc acrescenta um resumo seguro do valor padrão da coluna e do status de chave primária. Remove quebras de linha e neutraliza terminadores de comentário para impedir que o SQL feche o comentário gerado. A opção altera apenas a documentação, não os tipos das propriedades TypeScript.
Ferramentas relacionadas
Combine interfaces de linhas do banco com um esquema de API separado e uma camada de validação em tempo de execução quando a aplicação precisar desses contratos.