json-schema-to-sql
Version:
Convert a JSON schema into SQL DDL (create table) statements.
42 lines • 1.38 kB
JavaScript
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