UNPKG

api-core

Version:

Model-based dynamic multi-level APIs for any provider, plus multiple consumption channels

48 lines 2.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StudentEdge = void 0; const RawDataProvider_1 = require("../data/RawDataProvider"); const Student_1 = require("../model/Student"); const ModelEdge_1 = require("./ModelEdge"); const ApiEdgeError_1 = require("../../../src/query/ApiEdgeError"); const ApiRequest_1 = require("../../../src/request/ApiRequest"); const ApiEdgeQueryResponse_1 = require("../../../src/edge/ApiEdgeQueryResponse"); const ApiEdgeSchema_1 = require("../../../src/edge/ApiEdgeSchema"); const ApiEdgeQuery_1 = require("../../../src/edge/ApiEdgeQuery"); const ApiEdgeQueryType_1 = require("../../../src/edge/ApiEdgeQueryType"); class StudentEdge extends ModelEdge_1.ModelEdge { constructor() { super(); this.name = "student"; this.pluralName = "students"; this.schema = new ApiEdgeSchema_1.ApiEdgeSchema({ id: "=", fullName: new ApiEdgeSchema_1.ApiEdgeSchemaTransformation((schema, model) => { const parts = schema.fullName.split(' '); if (parts.length != 2) throw new ApiEdgeError_1.ApiEdgeError(400, "Invalid full name"); model.firstName = parts[0]; model.lastName = parts[1]; }, (model, schema) => { schema.fullName = [model.firstName, model.lastName].join(' '); }, ["firstName", "lastName"], String), email: "=", schoolId: "=", classId: "=" }); this.provider = RawDataProvider_1.RawDataProvider.students; this.createModel = (obj) => new Student_1.Student(obj); this.entryMethod("rename", (scope) => new Promise((resolve, reject) => (new ApiEdgeQuery_1.ApiEdgeQuery(this, ApiEdgeQueryType_1.ApiEdgeQueryType.Patch, scope.context, { fullName: scope.body.name.split(' ').reverse().join(' ') })).execute().then(resolve, reject)), ApiRequest_1.ApiRequestType.Change); this.entryMethod("withHungarianName", (scope) => { return new Promise(resolve => { const student = JSON.parse(JSON.stringify((scope.response || {}).data)); student.hungarianName = student.fullName.split(' ').reverse().join(' '); resolve(new ApiEdgeQueryResponse_1.ApiEdgeQueryResponse(student)); }); }, ApiRequest_1.ApiRequestType.Read); } } exports.StudentEdge = StudentEdge; //# sourceMappingURL=StudentEdge.js.map