portfolios.tools

Convertisseur SQL vers interfaces TypeScript

Convertissez les définitions CREATE TABLE PostgreSQL prises en charge en interfaces TypeScript de lignes, avec une nullabilité explicite et une représentation exacte des valeurs numériques.

Entrée SQL

Collez des instructions CREATE TABLE de 100 000 caractères maximum. Le SQL non pris en charge renvoie une erreur pour éviter qu’une interface partielle semble complète.

Résultat généré

Tables converties: 1

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

Fonctionnement

Collez une ou plusieurs instructions CREATE TABLE PostgreSQL. L’analyseur prend en charge IF NOT EXISTS facultatif, les noms de schéma, les identifiants entre guillemets, les types intégrés, la précision, les valeurs par défaut, les contraintes de nullabilité, les clés primaires et les contraintes courantes.

Vérifiez l’interface générée pour chaque table. Les colonnes nullable restent des propriétés obligatoires dont le type de valeur est `| null`. L’option JSDoc ajoute des valeurs par défaut assainies et des notes sur les clés primaires.

Comparez la sortie à la structure de vos requêtes et à la configuration du pilote. Une requête qui sélectionne seulement certaines colonnes a une structure différente de la ligne complète représentée ici.

Utilisez la sortie comme point de départ pour les types de votre application. Ajoutez une validation à l’exécution et ajustez les représentations propres au pilote dans votre projet.

Étape par étape

  1. Collez des définitions de tables PostgreSQL prises en charge
  2. Vérifiez les propriétés des lignes et leurs types
  3. Vérifiez les requêtes et représentations du pilote

Exemple pratique

Exemple d’entrée : 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);

Le type de ligne généré contient id et ticker comme chaînes obligatoires, shares comme chaîne obligatoire, note comme chaîne nullable obligatoire et metadata comme valeur unknown nullable obligatoire. bigint et numeric sont des chaînes afin de ne pas supposer que les nombres JavaScript conservent les valeurs exactes.

Quand utiliser ce convertisseur

Utilisez ce convertisseur pour transformer les définitions de tables PostgreSQL prises en charge en type de départ pour des lignes complètes. Il distingue les valeurs nullable des propriétés absentes.

Vérifiez les conversions de types selon votre pilote et les résultats de requêtes avant d’utiliser l’interface dans une application.

Erreurs fréquentes

Ne traitez pas une colonne nullable comme une propriété facultative. Une ligne sélectionnée contient la colonne, même si sa valeur peut être null.

Ne supposez pas que le pilote renvoie numeric et bigint comme chaînes. Configurez ou convertissez les résultats pour qu’ils correspondent à l’interface générée.

Règles d’analyse et de types

Pour chaque table prise en charge, séparez les définitions par les virgules situées hors des parenthèses et valeurs entre guillemets. Convertissez le type SQL de chaque colonne en type TypeScript. Émettez une propriété obligatoire et ajoutez `| null` si la colonne accepte null. Les colonnes de clé primaire n’acceptent pas null. Les valeurs par défaut servent uniquement de documentation.

Cet outil génère des interfaces de lignes depuis un sous ensemble de CREATE TABLE PostgreSQL. Les valeurs numeric et bigint exactes sont représentées par des chaînes ; l’application doit configurer le pilote ou convertir ses résultats. Les types SQL inconnus deviennent unknown. JSON et JSONB deviennent également unknown.

Portée et limites

Cet analyseur couvre un sous ensemble de CREATE TABLE PostgreSQL, pas tout le langage SQL. Il prend en charge les définitions simples, les noms avec schéma et entre guillemets, les expressions imbriquées, les contraintes courantes, les valeurs par défaut et les clés primaires. Les instructions ou options non prises en charge renvoient une erreur sans interface partielle. Il ne traite pas ALTER TABLE, les vues, CREATE TABLE AS, les partitions, l’héritage ni toute la grammaire PostgreSQL. Les valeurs numeric et bigint sont émises sous forme de chaînes et nécessitent une configuration ou conversion du pilote. Les dates sont représentées par des chaînes. Les types inconnus deviennent unknown. Les propriétés représentent des lignes complètes, pas des champs d’insertion facultatifs ni des résultats de requêtes partielles. Les types générés ne valident pas les données à l’exécution. L’entrée peut contenir jusqu’à 100 000 caractères.

Termes clés

Interface de ligne
Une interface de ligne de base de données décrit les propriétés renvoyées pour une ligne complète, y compris les valeurs nullable.
Colonne nullable
Une colonne nullable autorise la valeur null. Cela ne signifie pas que la propriété est absente d’une ligne complète.
Clé primaire
Une clé primaire identifie les lignes de façon unique et ses colonnes ne peuvent pas contenir null dans PostgreSQL.

Tâches associées

Convertissez des définitions de tables PostgreSQL prises en charge en types TypeScript de lignes. Pour décrire les requêtes et réponses HTTP, utilisez un outil distinct de schéma API.

Ce convertisseur se concentre sur la structure des lignes de base de données. Il ne génère ni validation à l’exécution ni fonctions d’accès aux données.

FAQ

Quelles instructions SQL sont prises en charge ?

L’analyseur lit les instructions CREATE TABLE prises en charge et sépare les définitions de colonnes et les contraintes uniquement au niveau supérieur. Il garde ensemble les virgules de précision des types, les expressions imbriquées et les valeurs par défaut entre guillemets. Les noms et types de colonnes, la nullabilité, les valeurs par défaut et les clés primaires servent à créer une interface par table.

Comment le résultat représente les colonnes nullable et les clés primaires ?

Une colonne nullable reste présente dans une ligne sélectionnée. Sa propriété est donc obligatoire et son type de valeur inclut null. Une colonne NOT NULL et une clé primaire n’incluent pas null. Une valeur par défaut concerne les insertions, pas la présence de la propriété dans une ligne sélectionnée.

Comment le convertisseur représente les types SQL en TypeScript ?

Les petits entiers et les types à virgule flottante deviennent number. bigint, numeric, decimal et money deviennent string afin de conserver les valeurs exactes. Configurez le pilote de base de données pour renvoyer ces valeurs sous forme de chaînes ou convertissez les résultats avant d’utiliser le type généré. JSON et JSONB deviennent unknown, car JSON peut contenir un scalaire, un tableau, un objet ou null. Les types de date et d’heure deviennent string.

Quelle syntaxe est hors du sous ensemble pris en charge ?

L’analyseur prend en charge un sous ensemble de CREATE TABLE PostgreSQL avec IF NOT EXISTS facultatif, schéma facultatif, identifiants entre guillemets, colonnes, contraintes courantes, valeurs par défaut et clés primaires. Il rejette les options finales et les instructions sans rapport au lieu de renvoyer un résultat partiel. Il ne traite pas ALTER TABLE, les vues, CREATE TABLE AS, les partitions, l’héritage ni toutes les formes de types et contraintes PostgreSQL.

Que fait l’option JSDoc ?

Lorsqu’elle est activée, JSDoc ajoute un résumé sûr de la valeur par défaut de la colonne et de son statut de clé primaire. Les retours à la ligne sont aplatis et les marqueurs de fin de commentaire neutralisés afin que le SQL ne ferme pas le commentaire généré. Cette option modifie la documentation, pas les types des propriétés TypeScript.

Outils associés

Associez les interfaces de lignes de base de données à un schéma API distinct et à une couche de validation à l’exécution lorsque votre application a besoin de ces contrats.