UNPKG

graphql-composer-typeorm

Version:
94 lines 4.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArgsFactory = exports.NumberArgument = exports.StringArgument = exports.Orders = void 0; const graphql_composer_decorators_1 = require("graphql-composer-decorators"); const graphql_composer_1 = require("graphql-composer"); const Parser_1 = require("./Parser"); var Orders; (function (Orders) { Orders["ASC"] = "ASC"; Orders["DESC"] = "DESC"; })(Orders = exports.Orders || (exports.Orders = {})); class StringArgument { } exports.StringArgument = StringArgument; class NumberArgument { } exports.NumberArgument = NumberArgument; class ArgsFactory { constructor() { } static get types() { return [ this.stringArgument, this.numberArgument, this.orderEnum, ...this._types.map((t) => t[1]), ]; } static convertFieldIntoArgField(field) { const isArray = Array.isArray(field.type); const newField = graphql_composer_1.InputField.create(field.name, graphql_composer_1.N(field.type)); const type = Parser_1.Parser.unwrapModifiedType(field.type); switch (type) { case String: newField.setType(graphql_composer_1.N(ArgsFactory.stringArgument)); break; case Number: newField.setType(graphql_composer_1.N(ArgsFactory.numberArgument)); break; } if (type instanceof graphql_composer_1.InputType) { const t = ArgsFactory._types.find((t) => t[0].name === type.name); if (t) { newField.setType(graphql_composer_1.N(t[1])); } else { const argsType = ArgsFactory.createArgs(type.classType, `${type.classType.name}Args`); newField.setType(graphql_composer_1.N(argsType)); } } if (isArray) { newField.setType(graphql_composer_1.N([newField.type])); } return newField; } static createArgs(classType, name) { const input = graphql_composer_decorators_1.MetadataStorage.instance.classTypeMap.get(classType).input; if (!input) { return; } const existing = this._types.find((t) => { return t[1].name === name; }); if (existing) { return existing[1]; } const newInput = input.copy().setName(name).setClassType(classType); ArgsFactory._types.push([input, newInput]); newInput.setFields(...input.fields.map(ArgsFactory.convertFieldIntoArgField)); return newInput; } static create(classType, name) { const finalName = name || `${classType.name}Args`; const t = () => { const newInput = this.createArgs(classType, finalName); const args = graphql_composer_1.InputType.create("") .addFields(graphql_composer_1.InputField.create("where", graphql_composer_1.N(newInput)), graphql_composer_1.InputField.create("order", graphql_composer_1.N([ArgsFactory.orderEnum])), graphql_composer_1.InputField.create("limit", graphql_composer_1.N(Number)), graphql_composer_1.InputField.create("skip", graphql_composer_1.N(Number))) .setExtensions({ decoratorInfos: { params: { hidden: true, }, }, }); return args; }; return t; } } exports.ArgsFactory = ArgsFactory; ArgsFactory._types = []; ArgsFactory.stringArgument = graphql_composer_1.InputType.create(StringArgument).addFields(graphql_composer_1.InputField.create("eq", graphql_composer_1.N(String)), graphql_composer_1.InputField.create("like", graphql_composer_1.N(String))); ArgsFactory.numberArgument = graphql_composer_1.InputType.create(NumberArgument).addFields(graphql_composer_1.InputField.create("eq", graphql_composer_1.N(Number)), graphql_composer_1.InputField.create("gt", graphql_composer_1.N(Number)), graphql_composer_1.InputField.create("gte", graphql_composer_1.N(Number)), graphql_composer_1.InputField.create("lt", graphql_composer_1.N(Number)), graphql_composer_1.InputField.create("lte", graphql_composer_1.N(Number))); ArgsFactory.orderEnum = graphql_composer_1.EnumType.create("Orders", Orders); //# sourceMappingURL=ArgsFactory.js.map