Startseite
SQL zu TypeBox

SQL DDL zu TypeBox TypeScript Schema Generator

Konvertieren Sie SQL CREATE TABLE-Anweisungen in @sinclair/typebox Laufzeit-Validierungsschemata mit Type.Object, Type.String, Type.Number und Type.Optional.

Presets:
SQL-Dialekt:
Null-Strategie:
Datumsmodus:
Schreibweise:
SQL-DDL-Eingabe3 Tabellen erkannt
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>;
Erkannte Tabellen
3
Verarbeitete Spalten
27
TypeBox-Schemata
14

Client-seitige Verarbeitung

Hochperformante Verarbeitung, die vollständig im Browserspeicher ausgeführt wird.

Zero-Server-Upload Datenschutz

Alle Daten verbleiben strikt lokal ohne externe Serverkommunikation.

Produktionsreifer Export

Saubere, optimierte Ausgabeformate, sofort einsatzbereit für die Produktion.

Technische Referenz & Architektur-Leitfaden

SQL-DDL zu TypeBox TypeScript-Schema-Konverter — Referenz-Leitfaden

Konvertieren Sie SQL CREATE TABLE-Anweisungen in @sinclair/typebox Laufzeit-Validierungsschemata mit Type.Object, Type.String, Type.Number und Type.Optional.

Wichtige Parameter & Steuerelemente

SQL-DialektEnum ('postgres' | 'mysql' | 'sqlite' | 'generic')

Wählt herstellerspezifische Typzuordnungen für Datentypen wie UUID, JSONB, ENUM, SERIAL und DATETIME.

Standard: 'postgres'
Nullability-ModusEnum ('optional' | 'union-null' | 'optional-null')

Steuert, wie Spalten ohne NOT NULL abgebildet werden: Type.Optional(T), Type.Union([T, Type.Null()]) oder beides.

Standard: 'optional'
Statische Typen generierenBoolean

Erzeugt begleitende TypeScript-Typdeklarationen mithilfe des Static<typeof Schema>-Hilfstyps von TypeBox.

Standard: true
AusgabeformatEnum ('standard' | 'fastify' | 'elysia')

Passt den generierten Code für eigenständige TypeBox-Validierung, Fastify-Routenschemata oder Elysia.js-Modelle an.

Standard: 'standard'

Profi-Tipps & Best Practices

Da TypeBox standardkonformes

Da TypeBox standardkonformes JSON-Schema erzeugt, können Sie die generierten Type.Object-Schemata direkt an Fastify-Routen oder Elysia.js-Handler übergeben, um extrem schnelle Validierung und automatische TypeScript-Typinferenz zu erhalten.

Für JSON- oder JSONB-Spalten empfiehlt

Für JSON- oder JSONB-Spalten empfiehlt sich die Zuordnung zu Type.Unknown() oder verschachtelten Type.Record(Type.String(), Type.Any()), um Flexibilität mit struktureller Typsicherheit zu kombinieren.

JavaScript verliert bei Ganzzahlen

JavaScript verliert bei Ganzzahlen oberhalb von 2^53 - 1 an Präzision. Bei SQL-Spalten wie BIGINT oder INT8 empfiehlt sich in JSON-APIs die Verwendung von Type.String({ pattern: '^[0-9]+$' }) oder Type.BigInt().

Häufige Fallstricke & Fehlerbehebung

Spalten ohne NOT NULL werden unerwartet als Type.Optional generiert

In SQL sind Spalten standardmäßig Nullable, sofern nicht explizit NOT NULL angegeben ist. Wenn das Attribut im Payload stets vorhanden sein muss (jedoch null enthalten darf), wählen Sie den Modus 'union-null' oder ergänzen Sie NOT NULL im DDL.

Benutzerdefinierte Erweiterungen oder Composite Types schlagen beim Parsen fehl

Spezifische Erweiterungen wie PostGIS GEOMETRY, HSTORE oder externe ENUMs werden standardmäßig auf Type.Unknown() abgebildet. Ersetzen Sie diese vor der Konvertierung durch Standard-SQL-Typen (z. B. TEXT, JSONB, BYTEA).

Häufig gestellte Fragen (FAQ)

Was ist @sinclair/typebox und warum sollte man SQL-DDL darin konvertieren?▼

TypeBox ist ein extrem performanter JSON-Schema-Typbuilder für TypeScript, der Laufzeitvalidierung mit statischer Typermittlung kombiniert. Er ermöglicht eine konsistente Schema-Wiederverwendung zwischen Datenbankmodellen und API-Endpunkten in Fastify und Elysia.js.

Wie erzeugt Static<typeof Schema> TypeScript-Typen?▼

Mithilfe fortschrittlicher bedingter Typen in TypeScript leitet TypeBox zur Kompilierzeit die passenden Interface-Strukturen direkt aus dem JavaScript-Schemaobjekt ab, ohne dass ein separater Code-Generierungsschritt nötig ist.

Wie werden automatisch inkrementierende Primärschlüssel (SERIAL, AUTO_INCREMENT) behandelt?▼

Der Generator übersetzt Primärschlüssel in Type.Integer({ minimum: 1 }). Für Erstellungsschemata (Insert) können diese Felder mittels Type.Optional() als optional gekennzeichnet werden, da die Datenbank den Wert vergibt.

Werden SQL-Tabellendefinitionen oder Daten an externe Server übertragen?▼

Nein. Die gesamte DDL-Analyse und Code-Generierung läuft zu 100 % lokal in Ihrem Browser ab. Es werden keinerlei SQL-Anweisungen oder Schemadaten über das Netzwerk übertragen.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →