UNPKG

@rsksmart/rif-storage-pinning

Version:

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

262 lines (261 loc) 9.47 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 sequelize_1 = __importDefault(require("sequelize")); function migrationCommands(transaction) { return [ { fn: 'createTable', params: [ 'event', { id: { type: sequelize_1.default.INTEGER, field: 'id', autoIncrement: true, primaryKey: true, allowNull: false }, blockNumber: { type: sequelize_1.default.INTEGER, field: 'blockNumber' }, transactionHash: { type: sequelize_1.default.STRING(66), field: 'transactionHash' }, logIndex: { type: sequelize_1.default.INTEGER, field: 'logIndex' }, targetConfirmation: { type: sequelize_1.default.INTEGER, field: 'targetConfirmation' }, contractAddress: { type: sequelize_1.default.STRING(66), field: 'contractAddress' }, event: { type: sequelize_1.default.TEXT, field: 'event' }, content: { type: sequelize_1.default.TEXT, field: 'content' }, emitted: { type: sequelize_1.default.BOOLEAN, field: 'emitted', defaultValue: false }, createdAt: { type: sequelize_1.default.DATE, field: 'createdAt', allowNull: false }, updatedAt: { type: sequelize_1.default.DATE, field: 'updatedAt', allowNull: false } }, { transaction: transaction } ] }, { fn: 'createTable', params: [ 'storage_agreement', { agreementReference: { type: sequelize_1.default.STRING(67), field: 'agreementReference', allowNull: false, primaryKey: true }, dataReference: { type: sequelize_1.default.STRING, field: 'dataReference', allowNull: false }, consumer: { type: sequelize_1.default.STRING(64), field: 'consumer', allowNull: false }, size: { type: sequelize_1.default.STRING, field: 'size', allowNull: false }, isActive: { type: sequelize_1.default.BOOLEAN, field: 'isActive', defaultValue: true }, billingPeriod: { type: sequelize_1.default.STRING, field: 'billingPeriod', allowNull: false }, billingPrice: { type: sequelize_1.default.STRING, field: 'billingPrice', allowNull: false }, availableFunds: { type: sequelize_1.default.STRING, field: 'availableFunds', allowNull: false }, lastPayout: { type: sequelize_1.default.DATE, field: 'lastPayout', allowNull: false }, expiredAtBlockNumber: { type: sequelize_1.default.NUMBER, field: 'expiredAtBlockNumber' } }, { transaction: transaction } ] }, { fn: 'createTable', params: [ 'jobs', { id: { type: sequelize_1.default.INTEGER, field: 'id', autoIncrement: true, primaryKey: true, allowNull: false }, name: { type: sequelize_1.default.STRING, field: 'name', allowNull: false }, state: { type: sequelize_1.default.ENUM('created', 'backoff', 'running', 'errored', 'finished'), field: 'state', defaultValue: 'created', allowNull: false }, tries: { type: sequelize_1.default.INTEGER, field: 'tries', defaultValue: 1, allowNull: false }, type: { type: sequelize_1.default.STRING, field: 'type' }, start: { type: sequelize_1.default.DATE, field: 'start' }, finish: { type: sequelize_1.default.DATE, field: 'finish' }, retry: { type: sequelize_1.default.STRING, field: 'retry' }, errorMessage: { type: sequelize_1.default.STRING, field: 'errorMessage' } }, { transaction: transaction } ] }, { fn: 'addIndex', params: [ 'event', ['transactionHash', 'logIndex'], { indexName: 'event_transaction_hash_log_index', name: 'event_transaction_hash_log_index', indicesType: 'UNIQUE', type: 'UNIQUE', transaction: transaction } ] } ]; } function rollbackCommands(transaction) { return [ { fn: 'dropTable', params: [ 'event', { transaction: transaction } ] }, { fn: 'dropTable', params: [ 'storage_agreement', { transaction: transaction } ] }, { fn: 'dropTable', params: [ 'jobs', { transaction: transaction } ] } ]; } function run(queryInterface, _commands) { return function (transaction) { return __awaiter(this, void 0, void 0, function* () { for (const command of _commands(transaction)) { // @ts-ignore: QueryInterface not typed correctly // eslint-disable-next-line prefer-spread yield queryInterface[command.fn].apply(queryInterface, command.params); } }); }; } exports.default = { up(queryInterface, sequelize) { return __awaiter(this, void 0, void 0, function* () { yield queryInterface.sequelize.transaction(run(queryInterface, migrationCommands)); }); }, down(queryInterface, sequelize) { return __awaiter(this, void 0, void 0, function* () { yield queryInterface.sequelize.transaction(run(queryInterface, rollbackCommands)); }); } };