diff --git a/internal/sql/repository/deploymentConfig/repository.go b/internal/sql/repository/deploymentConfig/repository.go index f2ec110523..854996b1e2 100644 --- a/internal/sql/repository/deploymentConfig/repository.go +++ b/internal/sql/repository/deploymentConfig/repository.go @@ -58,8 +58,8 @@ type Repository interface { SaveAll(tx *pg.Tx, configs []*DeploymentConfig) ([]*DeploymentConfig, error) Update(tx *pg.Tx, config *DeploymentConfig) (*DeploymentConfig, error) UpdateAll(tx *pg.Tx, config []*DeploymentConfig) ([]*DeploymentConfig, error) - GetByAppIdAndEnvId(appId, envId int) (*DeploymentConfig, error) - GetAppLevelConfigForDevtronApps(appId int) (*DeploymentConfig, error) + GetByAppIdAndEnvId(tx *pg.Tx, appId, envId int) (*DeploymentConfig, error) + GetAppLevelConfigForDevtronApps(tx *pg.Tx, appId int) (*DeploymentConfig, error) GetAppAndEnvLevelConfigsInBulk(appIdToEnvIdsMap map[int][]int) ([]*DeploymentConfig, error) GetByAppIdAndEnvIdEvenIfInactive(appId, envId int) (*DeploymentConfig, error) GetConfigByAppIds(appIds []int) ([]*DeploymentConfig, error) @@ -121,9 +121,15 @@ func (impl *RepositoryImpl) UpdateAll(tx *pg.Tx, configs []*DeploymentConfig) ([ return configs, err } -func (impl *RepositoryImpl) GetByAppIdAndEnvId(appId, envId int) (*DeploymentConfig, error) { +func (impl *RepositoryImpl) GetByAppIdAndEnvId(tx *pg.Tx, appId, envId int) (*DeploymentConfig, error) { result := &DeploymentConfig{} - err := impl.dbConnection.Model(result). + var query *orm.Query + if tx != nil { + query = tx.Model(result) + } else { + query = impl.dbConnection.Model(result) + } + err := query. Join("INNER JOIN app a"). JoinOn("deployment_config.app_id = a.id"). Join("INNER JOIN environment e"). @@ -138,9 +144,15 @@ func (impl *RepositoryImpl) GetByAppIdAndEnvId(appId, envId int) (*DeploymentCon return result, err } -func (impl *RepositoryImpl) GetAppLevelConfigForDevtronApps(appId int) (*DeploymentConfig, error) { +func (impl *RepositoryImpl) GetAppLevelConfigForDevtronApps(tx *pg.Tx, appId int) (*DeploymentConfig, error) { result := &DeploymentConfig{} - err := impl.dbConnection.Model(result). + var query *orm.Query + if tx != nil { + query = tx.Model(result) + } else { + query = impl.dbConnection.Model(result) + } + err := query. Join("INNER JOIN app a"). JoinOn("deployment_config.app_id = a.id"). Where("a.active = ?", true). diff --git a/pkg/deployment/common/deploymentConfigService.go b/pkg/deployment/common/deploymentConfigService.go index 1e648c4b5c..a35150498d 100644 --- a/pkg/deployment/common/deploymentConfigService.go +++ b/pkg/deployment/common/deploymentConfigService.go @@ -114,7 +114,7 @@ func (impl *DeploymentConfigServiceImpl) CreateOrUpdateConfig(tx *pg.Tx, config return nil, err } - configDbObj, err := impl.GetConfigDBObj(config.AppId, config.EnvironmentId) + configDbObj, err := impl.GetConfigDBObj(tx, config.AppId, config.EnvironmentId) if err != nil && !errors.Is(err, pg.ErrNoRows) { impl.logger.Errorw("error in fetching deployment config from DB by appId and envId", "appId", config.AppId, "envId", config.EnvironmentId, "err", err) @@ -275,7 +275,7 @@ func (impl *DeploymentConfigServiceImpl) GetAndMigrateConfigIfAbsentForHelmApp(a func (impl *DeploymentConfigServiceImpl) UpdateRepoUrlForAppAndEnvId(repoURL string, appId, envId int) error { - dbObj, err := impl.deploymentConfigRepository.GetByAppIdAndEnvId(appId, envId) + dbObj, err := impl.deploymentConfigRepository.GetByAppIdAndEnvId(nil, appId, envId) if err != nil { impl.logger.Errorw("error in getting deployment config by appId", "appId", appId, "envId", envId, "err", err) return err @@ -445,7 +445,7 @@ func (impl *DeploymentConfigServiceImpl) getConfigForHelmApps(appId int, envId i helmDeploymentConfig *bean.DeploymentConfig isMigrationNeeded bool ) - config, err := impl.deploymentConfigRepository.GetByAppIdAndEnvId(appId, envId) + config, err := impl.deploymentConfigRepository.GetByAppIdAndEnvId(nil, appId, envId) if err != nil && !errors.Is(err, pg.ErrNoRows) { impl.logger.Errorw("error in fetching deployment config by by appId and envId", "appId", appId, "envId", envId, "err", err) return nil, err @@ -596,18 +596,17 @@ func (impl *DeploymentConfigServiceImpl) getAllEnvLevelConfigsForLinkedReleases( } return configs, nil } - -func (impl *DeploymentConfigServiceImpl) GetConfigDBObj(appId, envId int) (*deploymentConfig.DeploymentConfig, error) { +func (impl *DeploymentConfigServiceImpl) GetConfigDBObj(tx *pg.Tx, appId, envId int) (*deploymentConfig.DeploymentConfig, error) { var configDbObj *deploymentConfig.DeploymentConfig var err error if envId == 0 { - configDbObj, err = impl.deploymentConfigRepository.GetAppLevelConfigForDevtronApps(appId) + configDbObj, err = impl.deploymentConfigRepository.GetAppLevelConfigForDevtronApps(tx, appId) if err != nil { impl.logger.Errorw("error in getting deployment config db object by appId", "appId", appId, "err", err) return nil, err } } else { - configDbObj, err = impl.deploymentConfigRepository.GetByAppIdAndEnvId(appId, envId) + configDbObj, err = impl.deploymentConfigRepository.GetByAppIdAndEnvId(tx, appId, envId) if err != nil { impl.logger.Errorw("error in getting deployment config db object by appId and envId", "appId", appId, "envId", envId, "err", err) return nil, err diff --git a/pkg/deployment/common/read/deploymentConfigReadService.go b/pkg/deployment/common/read/deploymentConfigReadService.go index f8c5d8254d..fd672bd73d 100644 --- a/pkg/deployment/common/read/deploymentConfigReadService.go +++ b/pkg/deployment/common/read/deploymentConfigReadService.go @@ -123,7 +123,7 @@ func (impl *DeploymentConfigReadServiceImpl) GetDeploymentConfigForApp(appId int appLevelConfig *bean.DeploymentConfig isMigrationNeeded bool ) - appLevelConfigDbObj, err := impl.deploymentConfigRepository.GetAppLevelConfigForDevtronApps(appId) + appLevelConfigDbObj, err := impl.deploymentConfigRepository.GetAppLevelConfigForDevtronApps(nil, appId) if err != nil && !interalUtil.IsErrNoRows(err) { impl.logger.Errorw("error in getting deployment config db object by appId", "appId", appId, "err", err) return appLevelConfig, isMigrationNeeded, err @@ -158,7 +158,7 @@ func (impl *DeploymentConfigReadServiceImpl) GetDeploymentConfigForAppAndEnv(app envLevelConfig *bean.DeploymentConfig isMigrationNeeded bool ) - appAndEnvLevelConfigDBObj, err := impl.deploymentConfigRepository.GetByAppIdAndEnvId(appId, envId) + appAndEnvLevelConfigDBObj, err := impl.deploymentConfigRepository.GetByAppIdAndEnvId(nil, appId, envId) if err != nil && !interalUtil.IsErrNoRows(err) { impl.logger.Errorw("error in getting deployment config db object by appId and envId", "appId", appId, "envId", envId, "err", err) return envLevelConfig, isMigrationNeeded, err