UNPKG

@terabits/grapi

Version:

Grapi Schema Generator For GraphQL Server

63 lines (62 loc) 2.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; exports.__esModule = true; exports.recursiveCreateType = exports.parseRelationConfig = void 0; var dataModel_1 = require("../dataModel"); var enumField_1 = __importDefault(require("../dataModel/enumField")); var objectField_1 = __importDefault(require("../dataModel/objectField")); var type_1 = require("../dataModel/type"); var lodash_1 = require("../lodash"); var graphqlType = function (field) { var value = field.getTypename(); if (field.isList()) { value = field.isNonNullItem() ? "[".concat(value, "!]") : "[".concat(value, "]"); } if (field.isNonNull()) { value = "".concat(value, "!"); } return value; }; var recursiveCreateType = function (fields, context) { var root = context.root; var content = []; (0, lodash_1.forEach)(fields, function (field, name) { if (field instanceof enumField_1["default"]) { root.addEnum("enum ".concat(field.getTypename(), " { ").concat(field.getValues().join(', '), " }"), field.getDescription()); } if (field instanceof objectField_1["default"]) { var typeFields = recursiveCreateType(field.getFields(), context); var objectTypename = field.getTypename(); root.addObjectType("type ".concat(objectTypename, " { ").concat(typeFields.join(' '), " }")); } var argumentsField = ""; if (!field.isScalar() && field.getType() !== type_1.DataModelType.OBJECT) { var relationField = field; var relationType = relationField.getRelationType(); var relationTo = relationField.getRelationTo(); var relationNamings = relationTo.getNamings(); if (relationType === dataModel_1.RelationType.biManyToMany || (relationField.isList() && (relationType === dataModel_1.RelationType.biOneToMany || relationType === dataModel_1.RelationType.uniOneToMany))) { argumentsField = "(\n orderBy: ".concat(relationNamings.capitalSingular, "OrderInput\n where: ").concat(relationNamings.capitalSingular, "WhereInput\n )"); } } content.push("".concat(name).concat(argumentsField, ": ").concat(graphqlType(field))); }); return content; }; exports.recursiveCreateType = recursiveCreateType; var parseRelationConfig = function (relationConfig) { return (0, lodash_1.transform)(relationConfig, function (result, value, key) { if (value instanceof Object) { result.foreignKey = value.key; result.side = value.side; } else { result[key] = value; } }); }; exports.parseRelationConfig = parseRelationConfig;