UNPKG

@onn-software/ddl-to-gql

Version:

Convert a SQL DDL to a GraphQL implementation with all relations.

40 lines (39 loc) 3.31 kB
#!/usr/bin/env node "use strict"; 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());