From 7dfa1bd8ca3e9096321478c6d9e42de5d6c4c1d3 Mon Sep 17 00:00:00 2001 From: Shrikant Kandula Date: Wed, 29 Apr 2020 16:16:09 +0530 Subject: [PATCH] Add `deletedAt` field into the unique index of datasources and pages. --- .../server/migrations/DatabaseChangelog.java | 35 +++++++++++++++++++ 1 file changed, 35 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 644bf2ccd3..819f4313fb 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 @@ -1,5 +1,6 @@ package com.appsmith.server.migrations; +import com.appsmith.server.constants.FieldName; import com.appsmith.server.domains.Action; import com.appsmith.server.domains.Application; import com.appsmith.server.domains.Collection; @@ -242,4 +243,38 @@ public class DatabaseChangelog { } } + @ChangeSet(order = "007", id = "datasource-deleted-at", author = "") + public void addDatasourceDeletedAtFieldAndIndex(MongoTemplate mongoTemplate) { + dropIndexIfExists(mongoTemplate, Datasource.class, "organization_datasource_compound_index"); + + ensureIndexes(mongoTemplate, Datasource.class, + makeIndex(FieldName.ORGANIZATION_ID, FieldName.NAME, FieldName.DELETED_AT) + .unique().named("organization_datasource_deleted_compound_index") + ); + + for (Datasource datasource : mongoTemplate.findAll(Datasource.class)) { + if (datasource.isDeleted()) { + datasource.setDeletedAt(datasource.getUpdatedAt()); + mongoTemplate.save(datasource); + } + } + } + + @ChangeSet(order = "008", id = "page-deleted-at", author = "") + public void addPageDeletedAtFieldAndIndex(MongoTemplate mongoTemplate) { + dropIndexIfExists(mongoTemplate, Page.class, "application_page_compound_index"); + + ensureIndexes(mongoTemplate, Page.class, + makeIndex(FieldName.APPLICATION_ID, FieldName.NAME, FieldName.DELETED_AT) + .unique().named("application_page_deleted_compound_index") + ); + + for (Page page : mongoTemplate.findAll(Page.class)) { + if (page.isDeleted()) { + page.setDeletedAt(page.getUpdatedAt()); + mongoTemplate.save(page); + } + } + } + }