UNPKG

shyft

Version:

Model driven GraphQL API framework

164 lines (163 loc) 8.94 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __spreadArray = (this && this.__spreadArray) || function (to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i]; return to; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateTestSchema = void 0; var ProtocolGraphQLConfiguration_1 = require("./ProtocolGraphQLConfiguration"); var Configuration_1 = require("../engine/configuration/Configuration"); var dataTypes_1 = require("../engine/datatype/dataTypes"); var Entity_1 = require("../engine/entity/Entity"); var Schema_1 = require("../engine/schema/Schema"); var StorageType_1 = require("../engine/storage/StorageType"); var StorageDataType_1 = require("../engine/storage/StorageDataType"); var generateTestSchema = function (setup) { if (setup === void 0) { setup = {}; } return __awaiter(void 0, void 0, void 0, function () { var entities, actions, testEntity, StorageDataTypeAny, StorageDataTypeText, StorageDataTypeString, TestStorage, schema, configuration; return __generator(this, function (_a) { entities = setup.entities, actions = setup.actions; testEntity = new Entity_1.Entity({ name: 'TestEntityName', description: 'Just some description', attributes: { id: { // type: DataTypeInteger, type: dataTypes_1.DataTypeID, description: 'ID of user', primary: true, }, firstName: { type: dataTypes_1.DataTypeString, description: 'First name', }, lastName: { type: dataTypes_1.DataTypeString, description: 'Last name', }, isActive: { type: dataTypes_1.DataTypeBoolean, description: 'User has been active within this month', }, }, }); StorageDataTypeAny = new StorageDataType_1.StorageDataType({ name: 'StorageDataTypeAny', description: 'Just some description', nativeDataType: 'text', // eslint-disable-next-line @typescript-eslint/no-empty-function serialize: function () { }, capabilities: ['lt', 'lte', 'gt', 'gte'], }); StorageDataTypeText = new StorageDataType_1.StorageDataType({ name: 'StorageDataTypeText', description: 'Just some description', nativeDataType: 'text', // eslint-disable-next-line @typescript-eslint/no-empty-function serialize: function () { }, capabilities: ['in', 'lt', 'lte', 'gt', 'gte', 'starts_with', 'ends_with'], }); StorageDataTypeString = new StorageDataType_1.StorageDataType({ name: 'StorageDataTypeString', description: 'Data type representing a text value', nativeDataType: String, isSortable: true, serialize: String, }); TestStorage = new StorageType_1.StorageType({ name: 'TestStorage', description: 'Just some description', findOne: function (entity, id, args, context) { ({ entity: entity, id: id, args: args, context: context }); // overcome linter warnings // return { resolve: () => {} }; return {}; }, findOneByValues: function (entity, arg, context) { ({ entity: entity, arg: arg, context: context }); // overcome linter warnings return {}; }, find: function (entity, args, context, parentConnection) { ({ entity: entity, args: args, context: context, parentConnection: parentConnection }); // overcome linter warnings return { data: [{ id: '1', something: 'something' }], pageInfo: { startCursor: null, endCursor: null, hasPreviousPage: false, hasNextPage: false, }, }; }, count: function (entity, args, context, parentConnection) { ({ entity: entity, args: args, context: context, parentConnection: parentConnection }); // overcome linter warnings return 0; }, mutate: function (entity, id, input, entityMutation, context) { ({ entity: entity, id: id, input: input, entityMutation: entityMutation, context: context }); // overcome linter warnings return {}; }, checkLookupPermission: function (entity, where, context) { ({ entity: entity, where: where, context: context }); // overcome linter warnings return true; }, }); TestStorage.addDataTypeMap(dataTypes_1.DataTypeID, StorageDataTypeString); TestStorage.addDataTypeMap(dataTypes_1.DataTypeInteger, StorageDataTypeAny); TestStorage.addDataTypeMap(dataTypes_1.DataTypeBoolean, StorageDataTypeAny); TestStorage.addDataTypeMap(dataTypes_1.DataTypeString, StorageDataTypeText); schema = new Schema_1.Schema({ defaultStorageType: TestStorage, defaultActionPermissions: null, permissionsMap: null, actions: actions || [], entities: entities ? __spreadArray(__spreadArray([], entities), [testEntity]) : [testEntity], }); configuration = new Configuration_1.Configuration({ languages: ['en'], schema: schema, protocolConfiguration: new ProtocolGraphQLConfiguration_1.ProtocolGraphQLConfiguration(), }); // console.log('Schema', { schema }); return [2 /*return*/, { configuration: configuration, schema: schema }]; }); }); }; exports.generateTestSchema = generateTestSchema;