Ir para o conteúdo
Totalmente local

SQL schema para entidade TypeORM

Converta instruções CREATE TABLE em classes de entidade TypeORM com decoradores e relações.

Entrada

SQL schema para entidade TypeORM

Cole uma ou mais instruções SQL CREATE TABLE e esta ferramenta devolve classes de entidade TypeORM prontas para integrar num projeto NestJS ou Node.js — @Entity, @Column, @PrimaryGeneratedColumn e os decoradores de relações que TypeORM espera, gerados diretamente a partir do esquema que já tem.

As opções controlam como as classes são geradas: escolha postgres, mysql ou sqlite como base de dados de destino, pois nomes de tipos de coluna como uuid, jsonb ou tinyint apenas existem em algumas delas. As chaves estrangeiras tornam-se pares @ManyToOne e @OneToMany, e uma tabela de junção pura — duas chaves estrangeiras e nada mais — colapsa numa verdadeira @ManyToMany com @JoinTable. Colunas em snake_case podem ser mapeadas para propriedades em camelCase automaticamente, com uma opção de nome adicionada sempre que os dois diferem, e os índices e restrições únicas são renderizados como decoradores de classe @Index e @Unique. Desative valores predefinidos ou deteção de relações quando quiser apenas a forma de coluna simples.

O analisador entende identificadores entre aspas, chaves estrangeiras inline e a nível de tabela, cláusulas CHECK e COMMENT, e terminações de linha Unix e Windows, portanto um despejo de esquema copiado de psql, mysqldump ou um ficheiro de migração funciona normalmente. Esquemas muito grandes também são tratados, embora código gerado acima de 10 MB devolva uma mensagem pedindo que encurte a entrada em vez de congelar o separador.

Tudo é executado no seu navegador — nenhum esquema, nome de tabela ou coluna sai do seu dispositivo. Copie o resultado, descarregue como ficheiro .txt para dividir em entidades por ficheiro você próprio, ou envie-o diretamente para a entrada novamente para continuar a refinar o mesmo esquema.

FAQ

Que relações é que deteta?
As chaves estrangeiras tornam-se pares @ManyToOne/@OneToMany. Uma tabela composta por exatamente duas chaves estrangeiras e mais nada é reconhecida como tabela de junção e torna-se @ManyToMany com @JoinTable em vez da sua própria classe.
Como é que os tipos de coluna são escolhidos?
Cada tipo SQL é mapeado para o tipo de coluna TypeORM mais próximo da base de dados de destino que selecionar — por exemplo uuid permanece uuid no PostgreSQL mas torna-se varchar(36) no MySQL e SQLite, pois nenhum deles tem uma coluna UUID nativa.
Posso gerar um ficheiro por entidade?
Sim. Ative "Dividir em um ficheiro por entidade" para obter um cabeçalho de comentário e a sua própria declaração de importação para cada classe, pronta para colar em ficheiros *.entity.ts separados.
O que acontece com chaves primárias compostas?
Cada coluna de uma chave primária composta obtém a sua própria @PrimaryColumn(); o auto-incremento e a geração UUID apenas se aplicam a uma chave de coluna única.
É que o meu esquema de base de dados é carregado em algum lugar?
Não. A análise e a geração de código são executadas inteiramente no seu navegador — o SQL que cola nunca sai do seu dispositivo.