result-tsk
Version:
result tool to use with or without NodeTskeleton template project
148 lines (147 loc) • 5.95 kB
JavaScript
"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 __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _Result_headers, _Result_metadata;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Result = void 0;
const ResultDto_1 = require("../ResultDto");
class Result {
constructor() {
_Result_headers.set(this, null);
_Result_metadata.set(this, void 0);
}
setMetadata(metadata) {
__classPrivateFieldSet(this, _Result_metadata, metadata, "f");
return this;
}
addMetadata(key, value) {
if (!__classPrivateFieldGet(this, _Result_metadata, "f"))
__classPrivateFieldSet(this, _Result_metadata, {}, "f");
__classPrivateFieldGet(this, _Result_metadata, "f")[key] = value;
return this;
}
addHeader(name, value) {
if (!__classPrivateFieldGet(this, _Result_headers, "f"))
__classPrivateFieldSet(this, _Result_headers, {}, "f");
Reflect.set(__classPrivateFieldGet(this, _Result_headers, "f"), name, value);
return this;
}
getHeaders() {
return __classPrivateFieldGet(this, _Result_headers, "f");
}
getMetadata() {
return __classPrivateFieldGet(this, _Result_metadata, "f");
}
hasMetadata() {
return !!__classPrivateFieldGet(this, _Result_metadata, "f") && Object.keys(__classPrivateFieldGet(this, _Result_metadata, "f")).length > 0;
}
setStatusCode(statusCode, success) {
this.statusCode = statusCode;
this.success = success;
return this;
}
getStatusCode() {
return this.statusCode;
}
setMessage(message, statusCode) {
this.message = message;
this.statusCode = statusCode;
this.success = true;
return this;
}
setError(error, statusCode) {
this.error = error;
this.statusCode = statusCode;
this.success = false;
return this;
}
setSuccess() {
this.success = true;
}
isSuccess() {
return this.success;
}
fromResult(result) {
this.error = result.error;
this.message = result.message;
this.statusCode = result.statusCode;
this.success = result.success;
return this;
}
hasError() {
return !!this.error;
}
hasMessage() {
return !!this.message;
}
hasData() {
return !!this.data;
}
setOnlyData(data) {
this.data = data;
return this;
}
setData(data, statusCode, message) {
this.data = data;
this.statusCode = statusCode;
this.success = true;
if (message) {
this.message = message;
}
return this;
}
execute(promise) {
return __awaiter(this, void 0, void 0, function* () {
const value = yield promise
.then((execution) => {
if (execution.error) {
this.setError(execution.error, execution.statusCode);
}
return execution.value;
})
.catch((error) => {
console.error(`Error on result execute ${new Date().toISOString()}: ${JSON.stringify({ message: error.message, stack: error.stack })}`);
const errorMessage = (error === null || error === void 0 ? void 0 : error.statusCode)
? `${error.message}`
: `Unexpected application error on execute: ${error.message}`;
const statusCode = (error === null || error === void 0 ? void 0 : error.statusCode) || 500;
this.setError(errorMessage, statusCode);
return null;
});
return Object.assign(Object.assign({}, this), { value });
});
}
toResultDto() {
const result = new ResultDto_1.ResultDto();
result.error = this.error;
result.message = this.message;
result.data = this.data;
return result;
}
static fromSuccess(data, statusCode) {
const result = new Result();
result.setSuccess();
result.setData(data, statusCode);
return result;
}
}
exports.Result = Result;
_Result_headers = new WeakMap(), _Result_metadata = new WeakMap();