@irrelon/forerunnerdb-core
Version:
ForerunnerDB core utilities for operating on JSON data.
98 lines (79 loc) • 1.97 kB
JavaScript
import CoreClass from "../core/CoreClass";
import OperationFailure from "./OperationFailure";
import OperationSuccess from "./OperationSuccess";
class OperationResult extends CoreClass {
constructor (data = {}) {
super();
this.resultCode = null;
this.resultData = null;
this.failure = [];
this.success = [];
if (data.failure) {
this.addFailure(data.failure);
}
if (data.success) {
this.addSuccess(data.success);
}
}
addResult (op) {
if (Array.isArray(op)) {
op.forEach((item) => {
this.addResult(item);
});
return this;
}
if (op instanceof OperationFailure) {
return this.addFailure(op);
}
if (op instanceof OperationSuccess) {
return this.addSuccess(op);
}
throw new Error("Operation being added is not an instance of OperationSuccess or OperationFailure!");
}
/**
* Add an failure to the operation result.
* @param {OperationFailure|Array<OperationFailure>} failure The failure or array of failures.
* @returns {OperationResult} Returns a pointer to itself.
*/
addFailure (failure) {
if (Array.isArray(failure)) {
failure.forEach((item) => {
this.addFailure(item);
});
return this;
}
this.failure.push(failure);
return this;
}
/**
* Add a success to the operation result.
* @param {OperationSuccess|Array<OperationSuccess>} success The success or array of successes.
* @returns {OperationResult} Returns a pointer to itself.
*/
addSuccess (success) {
if (Array.isArray(success)) {
success.forEach((item) => {
this.addSuccess(item);
});
return this;
}
this.success.push(success);
return this;
}
/**
* Removes all success results from the operation.
*/
clearSuccess () {
this.success = [];
}
/**
* Removes all failure results from the operation.
*/
clearFailure () {
this.failure = [];
}
setResultData = (data) => {
this.resultData = data;
}
}
export default OperationResult;