portfolios.tools

Conversor de SQL a interfaces TypeScript

Convierte definiciones compatibles de CREATE TABLE de PostgreSQL en interfaces TypeScript para filas, con nulabilidad explícita y representaciones exactas para tipos numéricos.

Entrada SQL

Pega sentencias CREATE TABLE de hasta 100.000 caracteres. El SQL no compatible genera un error para evitar que una interfaz parcial parezca completa.

Resultado generado

Tablas convertidas: 1

export interface FinancePositions {
  /** Primary key */
  "id": string;
  "ticker": string;
  "shares": string;
  /** Default expression: 'created, reviewed' */
  "note": string | null;
  "metadata": unknown | null;
}

Cómo funciona

Pega una o más sentencias CREATE TABLE de PostgreSQL. El analizador admite IF NOT EXISTS opcional, nombres de esquema, identificadores entre comillas, tipos integrados, precisión, valores predeterminados, restricciones de nulabilidad, claves primarias y restricciones comunes.

Revisa la interfaz generada para cada tabla. Las columnas nullable siguen siendo propiedades obligatorias con un tipo de valor `| null`. La opción JSDoc añade valores predeterminados depurados y notas sobre claves primarias.

Compara la salida con la forma de tus consultas y la configuración del controlador. Una consulta que selecciona solo algunas columnas tiene una forma distinta de la fila completa de la tabla representada aquí.

Usa la salida como punto de partida para los tipos de la aplicación. Añade validación en tiempo de ejecución y ajusta en tu proyecto las representaciones específicas del controlador.

Paso a paso

  1. Pega definiciones de tablas PostgreSQL compatibles
  2. Revisa las propiedades de fila y sus tipos
  3. Comprueba las consultas y las representaciones del controlador

Ejemplo práctico

Entrada de ejemplo: 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);

El tipo de fila generado incluye id y ticker como cadenas obligatorias, shares como cadena obligatoria, note como cadena nullable obligatoria y metadata como valor unknown nullable obligatorio. bigint y numeric se representan como cadenas para no suponer que los números de JavaScript conservan los valores exactos.

Cuándo usar este conversor

Usa este conversor para transformar definiciones compatibles de tablas PostgreSQL en un tipo inicial para filas completas. Mantiene separados los valores nullable y las propiedades ausentes.

Revisa las asignaciones de tipos según el controlador y los resultados de las consultas antes de usar la interfaz en una aplicación.

Errores habituales

No trates una columna nullable como una propiedad opcional. Una fila consultada incluye la columna, aunque su valor pueda ser null.

No supongas que el controlador devuelve numeric y bigint como cadenas. Configura o convierte los resultados para que coincidan con la interfaz generada.

Reglas de análisis y tipos

Para cada tabla compatible, separa las definiciones por comas fuera de paréntesis y valores entre comillas. Asigna a cada columna un tipo TypeScript. Emite una propiedad obligatoria y añade `| null` si la columna admite null. Las columnas de clave primaria no admiten null. Los valores predeterminados solo se incluyen como documentación.

La herramienta genera interfaces de filas desde un subconjunto de CREATE TABLE de PostgreSQL. Los valores numeric y bigint exactos se representan como cadenas, por lo que la aplicación debe configurar el controlador o convertir sus resultados. Los tipos SQL desconocidos se asignan a unknown. JSON y JSONB también se asignan a unknown.

Alcance y límites

Este analizador cubre un subconjunto de CREATE TABLE de PostgreSQL, no todo el lenguaje SQL. Admite definiciones básicas, nombres con esquema y entre comillas, expresiones anidadas, restricciones comunes, valores predeterminados y claves primarias. Las sentencias u opciones no compatibles producen un error sin interfaces parciales. No admite ALTER TABLE, vistas, CREATE TABLE AS, particiones, herencia ni toda la gramática de PostgreSQL. Los valores numeric y bigint se emiten como cadenas y requieren configuración o conversión del controlador. Las fechas se representan como cadenas. Los tipos desconocidos se asignan a unknown. Las propiedades representan filas completas, no campos opcionales de inserción ni resultados de consultas parciales. Los tipos generados no validan datos en tiempo de ejecución. La entrada admite hasta 100.000 caracteres.

Términos clave

Interfaz de fila
Una interfaz de fila de base de datos describe las propiedades de una fila completa, incluidos los valores nullable.
Columna nullable
Una columna nullable admite el valor null. No significa que la propiedad falte en una fila completa.
Clave primaria
Una clave primaria identifica filas de forma única y sus columnas no pueden contener null en PostgreSQL.

Tareas relacionadas

Convierte definiciones de tablas compatibles de PostgreSQL en tipos de filas TypeScript. Para describir solicitudes y respuestas HTTP, usa una herramienta independiente de esquemas de API.

Este conversor se centra en la forma de las filas de la base de datos. No genera validación en tiempo de ejecución ni funciones de acceso a datos.

Preguntas frecuentes

¿Qué sentencias SQL puede leer?

El analizador lee sentencias CREATE TABLE compatibles y separa las definiciones de columnas y restricciones solo en el nivel superior. Mantiene juntos las comas de precisión de tipos, expresiones anidadas y valores predeterminados entre comillas. Usa nombres y tipos de columnas, nulabilidad, valores predeterminados y claves primarias para crear una interfaz por tabla.

¿Cómo representa las columnas nullable y las claves primarias?

Una columna nullable sigue presente en una fila consultada, por lo que la propiedad es obligatoria y su tipo de valor incluye null. Una columna NOT NULL y una clave primaria no incluyen null. Un valor predeterminado afecta a las inserciones, no a la presencia de la propiedad en una fila consultada.

¿Cómo se asignan los tipos SQL a TypeScript?

Los enteros pequeños y los tipos de coma flotante se asignan a number. bigint, numeric, decimal y money se asignan a string para conservar los valores exactos. Configura el controlador de la base de datos para devolverlos como cadenas o conviértelos antes de usar el tipo generado. JSON y JSONB se asignan a unknown porque JSON puede contener un escalar, una matriz, un objeto o null. Los tipos de fecha y hora se asignan a string.

¿Qué sintaxis queda fuera del subconjunto compatible?

El analizador admite un subconjunto de CREATE TABLE de PostgreSQL con IF NOT EXISTS opcional, esquema opcional, identificadores entre comillas, columnas, restricciones comunes, valores predeterminados y claves primarias. Rechaza opciones finales y sentencias ajenas en vez de devolver un resultado parcial. No analiza ALTER TABLE, vistas, CREATE TABLE AS, particiones, herencia ni todas las formas de tipos y restricciones de PostgreSQL.

¿Qué añade la opción JSDoc?

Al activarlo, JSDoc añade un resumen seguro del valor predeterminado de la columna y de su clave primaria. Aplana los saltos de línea y neutraliza los terminadores de comentarios para que el SQL no pueda cerrar el comentario generado. La opción solo cambia la documentación, no los tipos de las propiedades TypeScript.

Herramientas relacionadas

Combina las interfaces de filas de base de datos con un esquema de API independiente y una capa de validación en tiempo de ejecución cuando tu aplicación necesite esos contratos.