UNPKG

@terabits/grapi

Version:

Grapi Schema Generator For GraphQL Server

67 lines (66 loc) 2.45 kB
"use strict"; exports.__esModule = true; var type_1 = require("../dataModel/type"); var lodash_1 = require("../lodash"); var constants_1 = require("./constants"); var parserOrder = function (order) { if ((0, lodash_1.isEmpty)(order) === false) { return (0, lodash_1.transform)(order, function (result, value, fieldName) { if (value === "ASC") { result[fieldName] = 1; } else { result[fieldName] = -1; } return result; }); } return null; }; var OrderInputPlugin = (function () { function OrderInputPlugin() { } OrderInputPlugin.prototype.visitModel = function (model, context) { if (model.isObjectType()) { return; } var root = context.root; var modelOrderInputName = this.getOrderInputName(model); var orderInput = "input ".concat(modelOrderInputName, " {\n ").concat(this.createOrderFilter(model.getFields()), "\n }"); root.addInput(orderInput); }; OrderInputPlugin.prototype.getOrderInputName = function (model) { return "".concat(model.getNamings().capitalSingular, "OrderInput"); }; OrderInputPlugin.parseOrder = function (order) { return parserOrder(order); }; OrderInputPlugin.prototype.parseOrder = function (order) { return parserOrder(order); }; OrderInputPlugin.prototype.createOrderFilter = function (fields) { var inputFields = []; (0, lodash_1.forEach)(fields, function (field, name) { switch (field.getType()) { case type_1.DataModelType.STRING: case type_1.DataModelType.INT: case type_1.DataModelType.FLOAT: case type_1.DataModelType.ENUM: case type_1.DataModelType.BOOLEAN: case type_1.DataModelType.CUSTOM_SCALAR: case type_1.DataModelType.ID: inputFields.push({ fieldName: name, type: constants_1.orderByInputName }); break; } }); return inputFields.map(function (_a) { var fieldName = _a.fieldName, type = _a.type; return "".concat(fieldName, ": ").concat(type); }).join(' '); }; return OrderInputPlugin; }()); exports["default"] = OrderInputPlugin;