From ffc4379a4d075dc2337ac87124fe036e94a33b54 Mon Sep 17 00:00:00 2001 From: Shrikant Kandula Date: Fri, 8 May 2020 11:46:13 +0530 Subject: [PATCH] Migration to install existing default plugins to existing organizations. --- .../server/migrations/DatabaseChangelog.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog.java index 47c16502d9..1ca36eec91 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog.java @@ -9,6 +9,7 @@ import com.appsmith.server.domains.Datasource; import com.appsmith.server.domains.Group; import com.appsmith.server.domains.InviteUser; import com.appsmith.server.domains.Organization; +import com.appsmith.server.domains.OrganizationPlugin; import com.appsmith.server.domains.Page; import com.appsmith.server.domains.PasswordResetToken; import com.appsmith.server.domains.Permission; @@ -18,6 +19,7 @@ import com.appsmith.server.domains.Query; import com.appsmith.server.domains.Role; import com.appsmith.server.domains.Setting; import com.appsmith.server.domains.User; +import com.appsmith.server.dtos.OrganizationPluginStatus; import com.appsmith.server.services.OrganizationService; import com.github.cloudyrock.mongock.ChangeLog; import com.github.cloudyrock.mongock.ChangeSet; @@ -32,8 +34,12 @@ import org.springframework.data.mongodb.core.index.IndexOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; +import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Slf4j @ChangeLog(order = "001") @@ -331,4 +337,32 @@ public class DatabaseChangelog { } } + @ChangeSet(order = "011", id = "install-default-plugins-to-all-organizations", author = "") + public void installDefaultPluginsToAllOrganizations(MongoTemplate mongoTemplate) { + final List defaultPlugins = mongoTemplate.find( + org.springframework.data.mongodb.core.query.Query.query(Criteria.where("defaultInstall").is(true)), + Plugin.class + ); + + mongoTemplate.findAll(Plugin.class); + + for (Organization organization : mongoTemplate.findAll(Organization.class)) { + if (CollectionUtils.isEmpty(organization.getPlugins())) { + organization.setPlugins(new ArrayList<>()); + } + + final Set installedPlugins = organization.getPlugins() + .stream().map(OrganizationPlugin::getPluginId).collect(Collectors.toSet()); + + for (Plugin defaultPlugin : defaultPlugins) { + if (!installedPlugins.contains(defaultPlugin.getId())) { + organization.getPlugins() + .add(new OrganizationPlugin(defaultPlugin.getId(), OrganizationPluginStatus.FREE)); + } + } + + mongoTemplate.save(organization); + } + } + }