@onn-software/ddl-to-gql
Version:
Convert a SQL DDL to a GraphQL implementation with all relations.
40 lines (39 loc) • 3.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const commander_1 = require("commander");
const executor_1 = require("./executor");
const ddl_interpreter_1 = require("./ddl-interpreter/ddl-interpreter");
const model_generator_1 = require("./model-generator/model-generator");
const repo_generator_1 = require("./repo-generator/repo-generator");
const resolver_generator_1 = require("./resolver-generator/resolver-generator");
const schema_generator_1 = require("./schema-generator/schema-generator");
const main_generator_1 = require("./main-generator/main-generator");
const heuristic_engine_1 = require("./heuristics/heuristic-engine");
const program = new commander_1.Command();
program
.name('@onn-software/ddl-to-gql')
.description('Convert a SQL DDL to a GraphQL implementation with all relations. See https://www.npmjs.com/package/@onn-software/ddl-to-gql for more details.')
.version('0.0.1')
.option('--ddlPath <text>', 'Required for phases [ddl]: Path to ddl file.')
.option('--ddlOverridesPath <text>', 'Optional: Path to field name overrides file, used in phases [ddl].')
.option('--defPath <text>', 'Optional: Path to interpreted ddl file.', './onn/table-definitions.json')
.option('--heurPath <text>', 'Optional: Path to heuristics file, used in phases [heuristics,model,repo,resolver,schema].', './onn/heuristics.json')
.option('--heurSuffixes <text>', 'Optional: Comma seperated list of possible suffixes, used in phases [heuristics].', 'id')
.option('--heurEnableAll', 'Optional: Flag to indicate to enable all found heuristics, without inspection by the user, used in phases [heuristics].', false)
.option('--tsFolder <text>', 'Optional: Output folder fot TS files, used in phases [model,repo,resolver,main].', './onn/ts')
.option('--tsPrefix <text>', 'Optional: Prefix for TS types.', 'Onn')
.option('--gqlFolder <text>', 'Optional: Output folder fot GQL files, used in phases [schema].', './onn/gql')
.option('--gqlPrefix <text>', 'Optional: Prefix for GQL types.', 'Gql')
.option('--gqlNoRoot', 'Optional: Make types instead of root query/mutation.', false)
.option('--gqlNoMutations', 'Optional: Omit mutations from the schema.', false)
.option('--sqlFactory <text>', 'Optional: Omit for custom factory, or chose one from: [knex], used in phases [main].')
.option('--override', 'Optional: Will delete the destination files and folders before saving new output.', false)
.option('--phases <phases>', 'Optional: Comma separated phases, or omit for all phases. Phases: [ddl,heuristics,model,repo,resolver,schema,main].')
.addHelpText('afterAll', '')
.addHelpText('afterAll', 'Basic usage example: npx @onn-software/ddl-to-gql --ddlPath ./example.ddl')
.addHelpText('afterAll', '');
program.parse(process.argv);
const programOptions = program.opts();
programOptions['phases'] = programOptions['phases']?.split(',') ?? [];
new executor_1.Executor(new ddl_interpreter_1.DdlInterpreter(), new heuristic_engine_1.HeuristicEngine(), new model_generator_1.ModelGenerator(), new repo_generator_1.RepoGenerator(), new resolver_generator_1.ResolverGenerator(), new schema_generator_1.SchemaGenerator(), new main_generator_1.MainGenerator()).execute(program.opts());