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.
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>;
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.