UNPKG

@rsksmart/rif-storage-pinning

Version:

Application for providing your storage space to other to use in exchange of RIF Tokens

98 lines (97 loc) 5.4 kB
"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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const bignumber_js_1 = __importDefault(require("bignumber.js")); const logger_1 = require("../../logger"); const utils_1 = require("../../utils"); const agreement_model_1 = __importDefault(require("../../models/agreement.model")); const errors_1 = require("../../errors"); const definitions_1 = require("../../definitions"); const communication_1 = require("../../communication"); const logger = logger_1.loggingFactory('processor:cache:agreement'); const handlers = { NewAgreement(event, options) { return __awaiter(this, void 0, void 0, function* () { const newAgreement = event.payload; const [agreement] = yield agreement_model_1.default.upsert(newAgreement); // Agreement might already exist logger.info(`Created new Agreement with ID ${newAgreement.agreementReference} for offer ${newAgreement.offerId}`); if (options.manager) { yield communication_1.broadcast(definitions_1.MessageCodesEnum.I_AGREEMENT_NEW, { agreementReference: newAgreement.agreementReference }); yield options.manager.pin(newAgreement.dataReference, agreement.size, agreement.agreementReference); } }); }, AgreementStopped(event, options) { return __awaiter(this, void 0, void 0, function* () { const { agreementReference } = event.payload; const agreement = yield agreement_model_1.default.findByPk(agreementReference); if (!agreement) { throw new errors_1.EventError(`Agreement with ID ${agreementReference} was not found!`, 'AgreementStopped'); } agreement.isActive = false; yield agreement.save(); if (options.manager) { try { yield options.manager.unpin(agreement.dataReference); } catch (e) { // We ignore not-pinned errors because the files might be already GCed if (e.code !== errors_1.NotPinnedError.code) { throw e; } } yield communication_1.broadcast(definitions_1.MessageCodesEnum.I_AGREEMENT_STOPPED, { agreementReference: agreement.agreementReference }); } logger.info(`Agreement ${agreementReference} was stopped.`); }); }, AgreementFundsDeposited(event) { return __awaiter(this, void 0, void 0, function* () { const { agreementReference: id, availableFunds } = event.payload; const agreement = yield agreement_model_1.default.findByPk(id); if (!agreement) { throw new errors_1.EventError(`Agreement with ID ${id} was not found!`, 'AgreementFundsDeposited'); } agreement.availableFunds = new bignumber_js_1.default(availableFunds); yield agreement.save(); logger.info(`Agreement ${id} was topped up with ${availableFunds}.`); }); }, AgreementFundsWithdrawn(event) { return __awaiter(this, void 0, void 0, function* () { const { agreementReference: id, availableFunds } = event.payload; const agreement = yield agreement_model_1.default.findByPk(id); if (!agreement) { throw new errors_1.EventError(`Agreement with ID ${id} was not found!`, 'AgreementFundsWithdrawn'); } agreement.availableFunds = new bignumber_js_1.default(availableFunds); yield agreement.save(); logger.info(`${availableFunds} was withdrawn from funds of Agreement ${id}.`); }); }, AgreementFundsPayout(event) { return __awaiter(this, void 0, void 0, function* () { const { agreementReference: id, availableFunds, lastPayout } = event.payload; const agreement = yield agreement_model_1.default.findByPk(id); if (!agreement) { throw new errors_1.EventError(`Agreement with ID ${id} was not found!`, 'AgreementFundsWithdrawn'); } agreement.lastPayout = lastPayout; agreement.availableFunds = new bignumber_js_1.default(availableFunds); yield agreement.save(); logger.info(`${availableFunds} was payed out from funds of Agreement ${id}.`); }); } }; exports.default = utils_1.buildHandler(handlers, ['NewAgreement', 'AgreementFundsDeposited', 'AgreementFundsWithdrawn', 'AgreementFundsPayout', 'AgreementStopped']);