api-core
Version:
Model-based dynamic multi-level APIs for any provider, plus multiple consumption channels
48 lines • 2.5 kB
JavaScript
;
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