Conversor de SQL para interfaces TypeScript
Converta definições CREATE TABLE compatíveis 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 suporta IF NOT EXISTS opcional, esquemas, identificadores entre aspas, tipos integrados, precisão, valores predefinidos, restrições de nulabilidade, chaves primárias e restrições comuns.
Reveja a interface gerada para cada tabela. Colunas nullable continuam a ser propriedades obrigatórias com tipo de valor `| null`. A opção JSDoc acrescenta valores predefinidos tratados e notas de chave primária.
Compare a saída com a estrutura das consultas e a configuração do controlador. Uma consulta que seleciona apenas algumas colunas tem uma 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 execução e ajuste as representações específicas do controlador no projeto.
Passo a passo
- Cole definições compatíveis de tabelas PostgreSQL
- Reveja propriedades das linhas e tipos de valores
- Verifique consultas e representações do controlador
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 cadeias obrigatórias, shares como cadeia obrigatória, note como cadeia nullable obrigatória e metadata como valor unknown nullable obrigatório. bigint e numeric usam cadeias para não assumir que os números JavaScript preservam valores exatos.
Quando usar este conversor
Use este conversor para transformar definições compatíveis de tabelas PostgreSQL num tipo inicial para linhas completas. Mantém valores nullable distintos de propriedades ausentes.
Reveja os mapeamentos de tipos segundo o controlador e os resultados das consultas antes de usar a interface numa 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 assuma que o controlador devolve numeric e bigint como cadeias. Configure ou converta resultados para corresponder à interface gerada.
Regras de análise e tipos
Para cada tabela compatível, separe 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 admitir null. Colunas de chave primária não admitem null. Os valores predefinidos 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 cadeias; a aplicação deve configurar o controlador ou converter os resultados. Tipos SQL desconhecidos correspondem a unknown. JSON e JSONB também correspondem a unknown.
Âmbito e limites
Este analisador cobre um subconjunto de CREATE TABLE do PostgreSQL, não toda a linguagem SQL. Suporta definições básicas, nomes com esquema e entre aspas, expressões aninhadas, restrições comuns, valores predefinidos e chaves primárias. Instruções ou opções não suportadas devolvem um erro sem interfaces parciais. Não suporta ALTER TABLE, vistas, CREATE TABLE AS, partições, herança nem toda a gramática PostgreSQL. Valores numeric e bigint são emitidos como cadeias e requerem configuração ou conversão do controlador. Datas são representadas como cadeias. Tipos desconhecidos correspondem a unknown. As propriedades representam linhas completas, não campos opcionais de inserção nem resultados de consultas parciais. Os tipos gerados não validam dados em execução. A entrada aceita até 100 000 caracteres.
Termos principais
- Interface de linha
- Uma interface de linha da base de dados descreve propriedades devolvidas por uma linha completa, incluindo valores nullable.
- Coluna nullable
- Uma coluna nullable permite o valor null. Isso não significa que a propriedade esteja ausente numa linha completa.
- Chave primária
- Uma chave primária identifica linhas sem repetição e as suas colunas não podem conter null no PostgreSQL.
Tarefas relacionadas
Converta definições de tabelas PostgreSQL compatíveis em tipos TypeScript para linhas. Para descrever pedidos e respostas HTTP, use uma ferramenta separada de esquemas de API.
Este conversor descreve a estrutura das linhas da base de dados. Não cria código de validação em execução nem funções de acesso à base de dados.
Perguntas frequentes
Que instruções SQL pode ler?
O analisador lê instruções CREATE TABLE compatíveis e separa definições de colunas e restrições apenas ao nível superior. Mantém juntas vírgulas de precisão de tipos, expressões aninhadas e valores predefinidos entre aspas. Usa nomes e tipos de colunas, nulabilidade, valores predefinidos 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 numa linha consultada, por isso a propriedade é obrigatória e o tipo do valor inclui null. Uma coluna NOT NULL e uma chave primária não incluem null. Um valor predefinido afeta inserções, não a presença da propriedade numa linha consultada.
Como são mapeados os tipos SQL para TypeScript?
Tipos de inteiros pequenos e vírgula flutuante correspondem a number. bigint, numeric, decimal e money correspondem a string para preservar valores exatos. Configure o controlador da base de dados para devolver esses valores como cadeias ou converta esses valores antes de usar o tipo gerado. JSON e JSONB correspondem a unknown porque JSON pode conter um escalar, matriz, objeto ou null. Tipos de data e hora correspondem a string.
Que sintaxe fica fora do subconjunto suportado?
O analisador suporta um subconjunto de CREATE TABLE do PostgreSQL com IF NOT EXISTS opcional, esquema opcional, identificadores entre aspas, colunas, restrições comuns, valores predefinidos e chaves primárias. Rejeita opções finais e instruções alheias em vez de devolver saída parcial. Não analisa ALTER TABLE, vistas, CREATE TABLE AS, partições, herança nem todas as formas de tipos e restrições do PostgreSQL.
O que acrescenta a opção JSDoc?
Quando ativado, JSDoc acrescenta um resumo seguro do valor predefinido da coluna e do estado de chave primária. Achata quebras de linha e neutraliza terminadores de comentários 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 da base de dados com um esquema de API separado e uma camada de validação em execução quando a aplicação precisar desses contratos.