UNPKG

json-schema-to-sql

Version:

Convert a JSON schema into SQL DDL (create table) statements.

42 lines 1.38 kB
import { generateSQL } from './generator'; import { resolveReferences } from './reference'; import { ajvValidate, zodParse } from './validator'; import { visitTable } from './visitor'; export function generateSQLFromJSONSchema(schema, dialect = 'pg') { const isAjvValid = ajvValidate(schema); if (!isAjvValid) { return { queries: null, errors: [ { path: ['#'], message: 'Invalid JSON Schema syntax', }, ], }; } const parseResult = zodParse(schema); if (!parseResult.success) { return { queries: null, errors: parseResult.error.issues.map((issue) => ({ path: issue.path, message: issue.message, })), }; } const visitedTables = []; for (const [tableName, table] of Object.entries(parseResult.data.properties)) { visitTable(visitedTables, tableName, table, [], ['properties']); } const resolutionResult = resolveReferences(visitedTables); if (!resolutionResult.success) { return { queries: null, errors: resolutionResult.errors, }; } const queries = generateSQL(resolutionResult.resolvedTables, dialect); return { queries, errors: null }; } //# sourceMappingURL=index.js.map