@onn-software/ddl-to-gql
Version:
Convert a SQL DDL to a GraphQL implementation with all relations.
32 lines (31 loc) • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModelGenerator = void 0;
const globals_1 = require("../globals");
const model_generator_templates_1 = require("./model-generator.templates");
class ModelGenerator {
execute(tableDefs) {
const partialsDefs = tableDefs.map((tableDef) => this.generateModel(tableDef));
return model_generator_templates_1.baseModel + partialsDefs.join('\n');
}
generateModel(tableDef) {
const interfaceName = globals_1.Globals.getTypescriptName(tableDef.tableName);
const typeDef = [
`export const ${interfaceName}__Table = '${tableDef.tableName}'`,
'',
`export interface ${interfaceName} {`,
];
tableDef.columns.forEach((c) => {
if (c.nullable) {
typeDef.push(` ${c.key}?: (${c.type} | null);${c.unique ? ' // unique' : ''}`);
}
else {
typeDef.push(` ${c.key}: ${c.type};${c.unique ? ' // unique' : ''}`);
}
});
typeDef.push('}');
typeDef.push('');
return typeDef.join('\n');
}
}
exports.ModelGenerator = ModelGenerator;