@elium/mighty
Version:
Context agnostic TS & JS ORM
55 lines • 2.94 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var _ = require("lodash");
var http_adapter_1 = require("./http.adapter");
var Observable_1 = require("rxjs/Observable");
require("rxjs/add/operator/mergeMap");
require("rxjs/observable/of");
var RestAdapter = (function (_super) {
__extends(RestAdapter, _super);
function RestAdapter() {
return _super !== null && _super.apply(this, arguments) || this;
}
RestAdapter.prototype.findOne = function (resource, request) {
var _this = this;
return this._getRequestWithId(resource, request)
.flatMap(function (baseRequest) { return _this.applyHook('beforeFindOne', baseRequest); })
.flatMap(function (newRequest) { return _this.dataLayer.findOne(newRequest); })
.flatMap(function (response) { return _this.applyHook('afterFindOne', response); });
};
RestAdapter.prototype.save = function (resource, request) {
var _this = this;
return this._getRequestWithId(resource, request)
.flatMap(function (baseRequest) { return _this.applyHook('beforeSave', baseRequest); })
.flatMap(function (newRequest) { return _this.dataLayer.save(newRequest); })
.flatMap(function (response) { return _this.applyHook('afterSave', response); });
};
RestAdapter.prototype.destroy = function (resource, request) {
var _this = this;
return this._getRequestWithId(resource, request)
.flatMap(function (baseRequest) { return _this.applyHook('beforeDestroy', baseRequest); })
.flatMap(function (newRequest) { return _this.dataLayer.destroy(newRequest); })
.flatMap(function (response) { return _this.applyHook('afterDestroy', response); });
};
RestAdapter.prototype._getRequestWithId = function (resource, request) {
var _this = this;
return this.applyHook('beforeRequest', request)
.flatMap(function (newRequest) {
var id = _.get(newRequest, 'criteria.id', null) || _.get(newRequest, 'data.id', "");
return Observable_1.Observable.of(_.merge({}, newRequest, { url: newRequest.url || _this.baseUrl + "/" + resource.identity + "/" + id }));
});
};
return RestAdapter;
}(http_adapter_1.HttpAdapter));
exports.RestAdapter = RestAdapter;
//# sourceMappingURL=rest.adapter.js.map
;