From c14ecf8ff6a690c70f8168b66f057063187cdd44 Mon Sep 17 00:00:00 2001 From: Djordje Kovacevic Date: Thu, 25 Jan 2024 10:12:48 +0100 Subject: [PATCH] Added new migration --- ot-node.js | 6 +++++ src/migration/migration-executor.js | 24 +++++++++++++++++++ ...-agreements-for-chiado-devnet-migration.js | 18 ++++++++++++++ .../service-agreement-repository.js | 8 +++++++ .../repository/repository-module-manager.js | 6 +++++ 5 files changed, 62 insertions(+) create mode 100644 src/migration/remove-service-agreements-for-chiado-devnet-migration.js diff --git a/ot-node.js b/ot-node.js index 6bdcf4fa9b..a8916ce8b7 100644 --- a/ot-node.js +++ b/ot-node.js @@ -49,6 +49,12 @@ class OTNode { await this.initializeModules(); + await MigrationExecutor.executeRemoveServiceAgreementsForChiadoDevnetMigration( + this.container, + this.logger, + this.config, + ); + await this.createProfiles(); await this.initializeCommandExecutor(); diff --git a/src/migration/migration-executor.js b/src/migration/migration-executor.js index 847a9308cf..e24dc97869 100644 --- a/src/migration/migration-executor.js +++ b/src/migration/migration-executor.js @@ -15,6 +15,7 @@ import ServiceAgreementsInvalidDataMigration from './service-agreements-invalid- import UalExtensionUserConfigurationMigration from './ual-extension-user-configuration-migration.js'; import UalExtensionTripleStoreMigration from './ual-extension-triple-store-migration.js'; import MarkStakingEventsAsProcessedMigration from './mark-staking-events-as-processed-migration.js'; +import RemoveServiceAgreementsForChiadoDevnetMigration from './remove-service-agreements-for-chiado-devnet-migration.js'; class MigrationExecutor { static async executePullShardingTableMigration(container, logger, config) { @@ -364,6 +365,29 @@ class MigrationExecutor { } } + static async executeRemoveServiceAgreementsForChiadoDevnetMigration(container, logger, config) { + if (process.env.NODE_ENV === NODE_ENVIRONMENTS.DEVNET) { + const repositoryModuleManager = container.resolve('repositoryModuleManager'); + + const migration = new RemoveServiceAgreementsForChiadoDevnetMigration( + 'removeServiceAgreementsForChiadoDevnetMigration', + logger, + config, + repositoryModuleManager, + ); + if (!(await migration.migrationAlreadyExecuted())) { + try { + await migration.migrate(); + } catch (error) { + logger.error( + `Unable to execute remove service agreements for Chiado Devnet migration. Error: ${error.message}`, + ); + this.exitNode(1); + } + } + } + } + static exitNode(code = 0) { process.exit(code); } diff --git a/src/migration/remove-service-agreements-for-chiado-devnet-migration.js b/src/migration/remove-service-agreements-for-chiado-devnet-migration.js new file mode 100644 index 0000000000..7c8dab87c5 --- /dev/null +++ b/src/migration/remove-service-agreements-for-chiado-devnet-migration.js @@ -0,0 +1,18 @@ +import BaseMigration from './base-migration.js'; + +const GNOSIS_DEVNET_CHAIN_ID = 'gnosis:10200'; + +class RemoveServiceAgreementsForChiadoDevnetMigration extends BaseMigration { + constructor(migrationName, logger, config, repositoryModuleManager) { + super(migrationName, logger, config); + this.repositoryModuleManager = repositoryModuleManager; + } + + async executeMigration() { + await this.repositoryModuleManager.removeServiceAgreementsForBlockchain( + GNOSIS_DEVNET_CHAIN_ID, + ); + } +} + +export default RemoveServiceAgreementsForChiadoDevnetMigration; diff --git a/src/modules/repository/implementation/sequelize/repositories/service-agreement-repository.js b/src/modules/repository/implementation/sequelize/repositories/service-agreement-repository.js index deec201839..1e8124f3cf 100644 --- a/src/modules/repository/implementation/sequelize/repositories/service-agreement-repository.js +++ b/src/modules/repository/implementation/sequelize/repositories/service-agreement-repository.js @@ -21,6 +21,14 @@ class ServiceAgreementRepository { }); } + async removeServiceAgreementsForBlockchain(blockchainId) { + await this.model.destroy({ + where: { + blockchainId, + }, + }); + } + async updateServiceAgreementRecord( blockchainId, assetStorageContractAddress, diff --git a/src/modules/repository/repository-module-manager.js b/src/modules/repository/repository-module-manager.js index 0a58b7570a..11e610d824 100644 --- a/src/modules/repository/repository-module-manager.js +++ b/src/modules/repository/repository-module-manager.js @@ -416,6 +416,12 @@ class RepositoryModuleManager extends BaseModuleManager { return this.getRepository('service_agreement').removeServiceAgreements(agreementIds); } + async removeServiceAgreementsForBlockchain(blockchainId) { + return this.getRepository('service_agreement').removeServiceAgreementsForBlockchain( + blockchainId, + ); + } + async updateServiceAgreementEpochsNumber(agreementId, epochsNumber) { return this.getRepository('service_agreement').updateServiceAgreementEpochsNumber( agreementId,