@it_kyryl/arbitrage_admin_schema
Version:
Schema for arbitrage admin panel
57 lines (56 loc) • 1.76 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseController = void 0;
const prisma_1 = __importDefault(require("../clients/prisma"));
const PrismaLog_repository_1 = __importDefault(require("../repository/database/Log/PrismaLog.repository"));
class BaseController {
dependency;
logRepository = new PrismaLog_repository_1.default(prisma_1.default);
constructor(dependency) {
this.dependency = dependency;
}
async execute(input) {
try {
const useCasesOutput = await this.useCasesImplementation(input);
const presenterOutput = this.dependency.presenter.present(useCasesOutput);
return {
error: false,
data: presenterOutput
};
}
catch (e) {
await this.handleError(e);
return {
error: true,
message: e.message
};
}
}
async handleError(e) {
let request = null;
let response = null;
let stack = e.stack ?? null;
let name = e.name ?? null;
try {
request = e.request ? JSON.stringify(e.request) : null;
}
catch { }
try {
response = e.response ? JSON.stringify(e.response) : null;
}
catch { }
const logData = {
isError: true,
message: e.message ?? '',
request,
name,
response,
stack
};
await this.logRepository.createLog(logData);
}
}
exports.BaseController = BaseController;