json-schema-to-sql
Version:
Convert a JSON schema into SQL DDL (create table) statements.
107 lines • 4.03 kB
TypeScript
import { z } from 'zod';
export type RefColumn = z.infer<typeof RefColumnSchema>;
type LiteralColumn = z.infer<typeof LiteralColumnSchema>;
type StringColumn = z.infer<typeof StringColumnSchema>;
interface ArrayColumn {
type: 'array';
items: Column;
}
export interface Table {
type: 'object';
properties: Record<string, Column>;
required?: string[];
'x-primaryKey'?: string;
}
type NonArrayColumn = Table | LiteralColumn | StringColumn | RefColumn;
export type Column = NonArrayColumn | ArrayColumn;
declare const RefColumnSchema: z.ZodObject<{
$ref: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
}, "strip", z.ZodTypeAny, {
$ref: string;
}, {
$ref: string;
}>;
declare const LiteralColumnSchema: z.ZodObject<{
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
enum: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">>;
description: z.ZodOptional<z.ZodString>;
} & {
type: z.ZodUnion<[z.ZodLiteral<"boolean">, z.ZodLiteral<"number">, z.ZodLiteral<"integer">]>;
}, "strip", z.ZodTypeAny, {
type: "number" | "boolean" | "integer";
default?: string | number | boolean | undefined;
enum?: (string | number | boolean)[] | undefined;
description?: string | undefined;
}, {
type: "number" | "boolean" | "integer";
default?: string | number | boolean | undefined;
enum?: (string | number | boolean)[] | undefined;
description?: string | undefined;
}>;
declare const StringColumnSchema: z.ZodObject<{
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
enum: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "many">>;
description: z.ZodOptional<z.ZodString>;
} & {
type: z.ZodLiteral<"string">;
format: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"uuid">, z.ZodLiteral<"date">, z.ZodLiteral<"datetime">]>>;
}, "strip", z.ZodTypeAny, {
type: "string";
default?: string | number | boolean | undefined;
enum?: (string | number | boolean)[] | undefined;
description?: string | undefined;
format?: "date" | "uuid" | "datetime" | undefined;
}, {
type: "string";
default?: string | number | boolean | undefined;
enum?: (string | number | boolean)[] | undefined;
description?: string | undefined;
format?: "date" | "uuid" | "datetime" | undefined;
}>;
export declare const DatabaseSchema: z.ZodObject<{
type: z.ZodLiteral<"object">;
properties: z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodObject<{
type: z.ZodLiteral<"object">;
properties: z.ZodLazy<z.ZodRecord<z.ZodString, z.ZodType<Column, z.ZodTypeDef, Column>>>;
required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
'x-primaryKey': z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
type: "object";
properties: Record<string, Column>;
required?: string[] | undefined;
'x-primaryKey'?: string | undefined;
}, {
type: "object";
properties: Record<string, Column>;
required?: string[] | undefined;
'x-primaryKey'?: string | undefined;
}>, {
type: "object";
properties: Record<string, Column>;
required?: string[] | undefined;
'x-primaryKey'?: string | undefined;
}, {
type: "object";
properties: Record<string, Column>;
required?: string[] | undefined;
'x-primaryKey'?: string | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
type: "object";
properties: Record<string, {
type: "object";
properties: Record<string, Column>;
required?: string[] | undefined;
'x-primaryKey'?: string | undefined;
}>;
}, {
type: "object";
properties: Record<string, {
type: "object";
properties: Record<string, Column>;
required?: string[] | undefined;
'x-primaryKey'?: string | undefined;
}>;
}>;
export {};
//# sourceMappingURL=definitions.d.ts.map