Accueil
SQL vers TypeBox

Générateur de schémas TypeScript TypeBox depuis SQL DDL

Convertissez les instructions SQL CREATE TABLE en schémas de validation à l'exécution @sinclair/typebox utilisant Type.Object, Type.String, Type.Number et Type.Optional.

Presets:
Dialecte SQL:
Gestion des valeurs nulles:
Format de date:
Casse des identifiants:
Entrée SQL DDL3 tables détectées
import { Type, Static } from '@sinclair/typebox';

UserRole {
  SUPERADMIN = 'SUPERADMIN',
  ORG_ADMIN = 'ORG_ADMIN',
  MEMBER = 'MEMBER',
  BILLING = 'BILLING',
  GUEST = 'GUEST',
}
UserRoleSchema = Type.Enum(UserRole);
UserRoleType = Static<typeof UserRoleSchema>;

SubscriptionStatus {
  TRIALING = 'TRIALING',
  ACTIVE = 'ACTIVE',
  PAST_DUE = 'PAST_DUE',
  CANCELED = 'CANCELED',
}
SubscriptionStatusSchema = Type.Enum(SubscriptionStatus);
SubscriptionStatusType = Static<typeof SubscriptionStatusSchema>;

/**
 * TypeBox Schema for SQL table "organizations"
 * Primary Key: [id]
 */
OrganizationSchema = Type.Object({
  id: Type.String({ format: 'uuid' }),
  slug: Type.String({ maxLength: 64 }),
  name: Type.String({ maxLength: 255 }),
  billingEmail: Type.String({ format: 'email', maxLength: 255 }),
  status: SubscriptionStatusSchema,
  settings: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
  isActive: Type.Boolean({ default: true }),
  createdAt: Type.String({ format: 'date-time' }),
  updatedAt: Type.String({ format: 'date-time' }),
}, { additionalProperties: false });
Organization = Static<typeof OrganizationSchema>;

/**
 * TypeBox Schema for SQL table "users"
 * Primary Key: [id]
 */
UserSchema = Type.Object({
  id: Type.String({ format: 'uuid' }),
  organizationId: Type.String({ format: 'uuid' }),
  email: Type.String({ format: 'email', maxLength: 255 }),
  fullName: Type.Optional(Type.String({ maxLength: 120 })),
  avatarUrl: Type.Optional(Type.String({ format: 'uri', maxLength: 500 })),
  role: UserRoleSchema,
  phoneNumber: Type.Optional(Type.String({ maxLength: 32 })),
  isVerified: Type.Boolean({ default: false }),
  lastLoginAt: Type.Optional(Type.String({ format: 'date-time' })),
  createdAt: Type.String({ format: 'date-time' }),
}, { additionalProperties: false });
User = Static<typeof UserSchema>;

/**
 * TypeBox Schema for SQL table "audit_logs"
 * Primary Key: [id]
 */
AuditLogSchema = Type.Object({
  id: Type.Integer({ minimum: 0 }),
  organizationId: Type.String({ format: 'uuid' }),
  actorId: Type.Optional(Type.String({ format: 'uuid' })),
  eventName: Type.String({ maxLength: 100 }),
  ipAddress: Type.Optional(Type.String({ format: 'ipv4' })),
  userAgent: Type.Optional(Type.String({ maxLength: 500 })),
  payload: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
  createdAt: Type.String({ format: 'date-time' }),
}, { additionalProperties: false });
AuditLog = Static<typeof AuditLogSchema>;
Tables détectées
3
Colonnes traitées
27
Schémas TypeBox
14

Traitement côté client

Traitement haute performance exécuté entièrement dans la mémoire de votre navigateur.

Confidentialité sans envoi au serveur

Toutes les données restent strictement locales sans aucune communication vers un serveur externe.

Export prêt pour la production

Formats de sortie propres et optimisés, prêts pour un déploiement immédiat en production.

Référence technique et guide d'architecture

Guide développeur du générateur de schémas TypeScript TypeBox depuis SQL DDL — Guide de référence

Convertissez les instructions SQL CREATE TABLE en schémas de validation à l'exécution @sinclair/typebox utilisant Type.Object, Type.String, Type.Number et Type.Optional.

Paramètres clés et contrôles

Dialecte SQLEnum ('postgres' | 'mysql' | 'sqlite' | 'generic')

Sélectionne le mappage de types spécifique au SGBD pour les types tels que UUID, JSONB, ENUM, SERIAL et DATETIME.

Par défaut : 'postgres'
Mode de nullabilitéEnum ('optional' | 'union-null' | 'optional-null')

Définit la gestion des colonnes sans NOT NULL : Type.Optional(T), Type.Union([T, Type.Null()]) ou une combinaison des deux.

Par défaut : 'optional'
Générer les types statiquesBoolean

Génère des alias de types TypeScript complémentaires via l'utilitaire Static<typeof Schema> de TypeBox.

Par défaut : true
Format de sortieEnum ('standard' | 'fastify' | 'elysia')

Adapte le code généré pour une validation TypeBox standard ou une intégration directe avec Fastify ou Elysia.js.

Par défaut : 'standard'

Conseils de pro et bonnes practices

Puisque TypeBox génère des

Puisque TypeBox génère des spécifications conformes à JSON Schema, vous pouvez injecter directement les schémas Type.Object dans les routes Fastify ou Elysia.js pour une validation ultra-performante et une inférence TypeScript automatique.

Pour les colonnes PostgreSQL

Pour les colonnes PostgreSQL JSON/JSONB ou MySQL JSON, utilisez Type.Unknown() ou Type.Record(Type.String(), Type.Any()) afin de combiner flexibilité des données et robustesse du schéma.

En JavaScript

En JavaScript, les entiers dépassant 2^53 - 1 perdent en précision. Pour les colonnes SQL BIGINT ou INT8 dans des API REST, il est conseillé d'utiliser Type.String({ pattern: '^[0-9]+$' }) ou Type.BigInt().

Pièges courants et dépannage

Les colonnes sans NOT NULL génèrent des propriétés Type.Optional inattendues

En SQL DDL, toute colonne sans clause NOT NULL explicite accepte la valeur NULL par défaut. Si la propriété doit être présente dans la charge utile tout en acceptant null, choisissez le mode 'union-null' ou ajoutez NOT NULL dans votre DDL.

Erreur d'analyse sur les extensions ou types composites propriétaires

Les types spécifiques comme PostGIS GEOMETRY ou HSTORE sont associés par défaut à Type.Unknown(). Remplacez-les par des types SQL primitifs standards (comme TEXT ou JSONB) avant la conversion.

Foire aux questions (FAQ)

Qu'est-ce que @sinclair/typebox et quel est l'intérêt d'y convertir du SQL DDL ?▼

TypeBox est un constructeur de schémas JSON Schema ultra-rapide pour TypeScript qui unifie validation à l'exécution et inférence de types statiques, particulièrement adapté aux architectures web modernes avec Fastify ou Elysia.js.

Comment l'utilitaire Static<typeof Schema> extrait-il les types TypeScript ?▼

Grâce aux types conditionnels avancés de TypeScript, l'utilitaire Static<typeof Schema> infère directement l'interface TypeScript équivalente depuis l'objet schéma JavaScript, éliminant toute duplication manuelle.

Comment les clés primaires auto-incrémentées (SERIAL, AUTO_INCREMENT) sont-elles gérées ?▼

Le générateur traduit les identifiants auto-incrémentés en Type.Integer({ minimum: 1 }). Pour les schémas d'insertion (INSERT), ces champs peuvent être déclarés optionnels avec Type.Optional(), la base générant la clé.

Les schémas SQL ou structures de bases de données sont-ils envoyés à un serveur ?▼

Non. L'analyse syntaxique du SQL et la génération du code TypeBox s'exécutent intégralement côté client dans votre navigateur web, garantissant la confidentialité absolue de votre modèle de données.

Outils et utilitaires connexes

Tous les outils →
Guide Développeur du Générateur de Code cURL vers Rust (reqwest & tokio)Développement

Convertissez des commandes cURL en requêtes HTTP asynchrones et idiomatiques en Rust à l'aide de reqwest, serde_json, d'en-têtes personnalisés et du runtime Tokio.

Ouvrir l'outil→
Guide développeur du générateur de code cURL vers Ruby (Net::HTTP & Faraday)Développement

Convertissez vos requêtes cURL en code Ruby propre et idiomatique avec Net::HTTP, URI, Faraday et la gestion native du JSON.

Ouvrir l'outil→
Générateur de NetworkPolicy K8S Guide DéveloppeurDéveloppement

Référence technique pour générer des manifestes Kubernetes NetworkPolicy déclaratifs, l'isolation de pods zero-trust, les règles d'ingress/egress, les blocs CIDR et les ports multiples.

Ouvrir l'outil→
Guide Développeur : Générateur YAML Kubernetes RBAC Role & ClusterRoleBindingDéveloppement

Concevez des manifestes Kubernetes RBAC pour Role, ClusterRole, RoleBinding et ClusterRoleBinding avec groupes d'API, verbes de ressources et comptes de service.

Ouvrir l'outil→
Guide du Développeur du Générateur de YAML Kubernetes StatefulSet & Headless ServiceDéveloppement

Générez des manifestes Kubernetes StatefulSet de qualité production avec Headless Service associé, volumeClaimTemplates persistants, réplicas et podManagementPolicy.

Ouvrir l'outil→
Référence Développeur Nginx Location Match TesterDéveloppement

Guide technique pour tester les directives location Nginx et analyser l'ordre de priorité des modificateurs.

Ouvrir l'outil→