chore: adding indices to workspace, application and newAction class (#27766)
## Description > Adding indices to classes ### This PR adds indices to three classes as a chore: - Workspace (`tenantId`, `deleted`, `deletedAt`) - Application (`deleted`, `deletedAt`) - NewAction ((`unpublishedAction.datasource._id`, `deleted`, `deletedAt`), (`publishedAction.datasource._id`, `deleted`, `deletedAt`)) ### This PR also modifies the query criteria for counting #actions associated to a datasource. Fixes #23360 #### Type of change - Chore (housekeeping or task changes that don't impact user perception) #### How Has This Been Tested? - [x] Manual ## Checklist: #### Dev activity - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag
This commit is contained in:
parent
20c5290c57
commit
65bd8ce334
|
|
@ -0,0 +1,53 @@
|
||||||
|
package com.appsmith.server.migrations.db.ce;
|
||||||
|
|
||||||
|
import com.appsmith.server.constants.FieldName;
|
||||||
|
import com.appsmith.server.domains.Application;
|
||||||
|
import io.mongock.api.annotations.ChangeUnit;
|
||||||
|
import io.mongock.api.annotations.Execution;
|
||||||
|
import io.mongock.api.annotations.RollbackExecution;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.data.mongodb.UncategorizedMongoDbException;
|
||||||
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
|
import org.springframework.data.mongodb.core.index.Index;
|
||||||
|
|
||||||
|
import static com.appsmith.server.migrations.DatabaseChangelog1.dropIndexIfExists;
|
||||||
|
import static com.appsmith.server.migrations.DatabaseChangelog1.ensureIndexes;
|
||||||
|
import static com.appsmith.server.migrations.DatabaseChangelog1.makeIndex;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@ChangeUnit(order = "025", id = "add-index-application-deleted", author = " ")
|
||||||
|
public class Migration025AddIndexDeletedInApplication {
|
||||||
|
|
||||||
|
private final MongoTemplate mongoTemplate;
|
||||||
|
private static final String APPLICATION_COMPOUND_INDEX_DELETED = "deleted_compound_index";
|
||||||
|
|
||||||
|
public Migration025AddIndexDeletedInApplication(MongoTemplate mongoTemplate) {
|
||||||
|
this.mongoTemplate = mongoTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mandatory to declare, but we don't have a use-case for this yet.
|
||||||
|
*/
|
||||||
|
@RollbackExecution
|
||||||
|
public void rollbackExecution() {}
|
||||||
|
|
||||||
|
@Execution
|
||||||
|
public void createIndexInApplicationCollection() {
|
||||||
|
dropIndexIfExists(mongoTemplate, Application.class, APPLICATION_COMPOUND_INDEX_DELETED);
|
||||||
|
|
||||||
|
Index deletedAtDeletedIndex =
|
||||||
|
makeIndex(FieldName.DELETED, FieldName.DELETED_AT).named(APPLICATION_COMPOUND_INDEX_DELETED);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ensureIndexes(mongoTemplate, Application.class, deletedAtDeletedIndex);
|
||||||
|
} catch (UncategorizedMongoDbException mongockException) {
|
||||||
|
log.debug(
|
||||||
|
"An error occurred while creating the index : {}, skipping the addition of index because of {}.",
|
||||||
|
APPLICATION_COMPOUND_INDEX_DELETED,
|
||||||
|
mongockException.getMessage());
|
||||||
|
} catch (Exception exception) {
|
||||||
|
log.debug("An error occurred while creating the index : {}", APPLICATION_COMPOUND_INDEX_DELETED);
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package com.appsmith.server.migrations.db.ce;
|
||||||
|
|
||||||
|
import com.appsmith.server.constants.FieldName;
|
||||||
|
import com.appsmith.server.domains.Workspace;
|
||||||
|
import io.mongock.api.annotations.ChangeUnit;
|
||||||
|
import io.mongock.api.annotations.Execution;
|
||||||
|
import io.mongock.api.annotations.RollbackExecution;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.data.mongodb.UncategorizedMongoDbException;
|
||||||
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
|
import org.springframework.data.mongodb.core.index.Index;
|
||||||
|
|
||||||
|
import static com.appsmith.server.migrations.DatabaseChangelog1.dropIndexIfExists;
|
||||||
|
import static com.appsmith.server.migrations.DatabaseChangelog1.ensureIndexes;
|
||||||
|
import static com.appsmith.server.migrations.DatabaseChangelog1.makeIndex;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@ChangeUnit(order = "026", id = "add-index-workspace-tenant-deleted", author = " ")
|
||||||
|
public class Migration026AddIndexTenantAndDeletedInWorkspace {
|
||||||
|
|
||||||
|
private final MongoTemplate mongoTemplate;
|
||||||
|
|
||||||
|
private static final String WORKSPACE_COMPOUND_INDEX_TENANT = "tenantId_deleted_compound_index";
|
||||||
|
private static final String TENANT_ID = "tenantId";
|
||||||
|
|
||||||
|
public Migration026AddIndexTenantAndDeletedInWorkspace(MongoTemplate mongoTemplate) {
|
||||||
|
this.mongoTemplate = mongoTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mandatory to declare, but we don't have a use-case for this yet.
|
||||||
|
*/
|
||||||
|
@RollbackExecution
|
||||||
|
public void rollbackExecution() {}
|
||||||
|
|
||||||
|
@Execution
|
||||||
|
public void addIndexInWorkspaceCollection() {
|
||||||
|
|
||||||
|
dropIndexIfExists(mongoTemplate, Workspace.class, WORKSPACE_COMPOUND_INDEX_TENANT);
|
||||||
|
|
||||||
|
Index tenantDeletedAtIndex =
|
||||||
|
makeIndex(TENANT_ID, FieldName.DELETED, FieldName.DELETED_AT).named(WORKSPACE_COMPOUND_INDEX_TENANT);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ensureIndexes(mongoTemplate, Workspace.class, tenantDeletedAtIndex);
|
||||||
|
} catch (UncategorizedMongoDbException mongockException) {
|
||||||
|
log.debug(
|
||||||
|
"An error occurred while creating the index : {}, skipping the addition of index because of {}.",
|
||||||
|
WORKSPACE_COMPOUND_INDEX_TENANT,
|
||||||
|
mongockException.getMessage());
|
||||||
|
} catch (Exception exception) {
|
||||||
|
log.debug("An error occurred while creating the index : {}", WORKSPACE_COMPOUND_INDEX_TENANT);
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package com.appsmith.server.migrations.db.ce;
|
||||||
|
|
||||||
|
import com.appsmith.external.models.QDatasource;
|
||||||
|
import com.appsmith.server.constants.FieldName;
|
||||||
|
import com.appsmith.server.domains.NewAction;
|
||||||
|
import com.appsmith.server.domains.QNewAction;
|
||||||
|
import io.mongock.api.annotations.ChangeUnit;
|
||||||
|
import io.mongock.api.annotations.Execution;
|
||||||
|
import io.mongock.api.annotations.RollbackExecution;
|
||||||
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
|
import org.springframework.data.mongodb.core.index.Index;
|
||||||
|
|
||||||
|
import static com.appsmith.server.migrations.DatabaseChangelog1.ensureIndexes;
|
||||||
|
import static com.appsmith.server.migrations.DatabaseChangelog1.makeIndex;
|
||||||
|
import static com.appsmith.server.repositories.ce.BaseAppsmithRepositoryCEImpl.fieldName;
|
||||||
|
|
||||||
|
@ChangeUnit(order = "027", id = "new-action-compound-index-datasource-id", author = " ")
|
||||||
|
public class Migration027AddIndexDatasourceIdAndDeletedInAction {
|
||||||
|
private final MongoTemplate mongoTemplate;
|
||||||
|
|
||||||
|
private static final String PUBLISHED_ACTION_COMPOUND_INDEX_DATASOURCE_ID =
|
||||||
|
"publishedAction_datasourceId_deleted_compound_index";
|
||||||
|
private static final String UNPUBLISHED_ACTION_COMPOUND_INDEX_DATASOURCE_ID =
|
||||||
|
"unpublishedAction_datasourceId_deleted_compound_index";
|
||||||
|
|
||||||
|
private static final String UNPUBLISHED_ACTION = fieldName(QNewAction.newAction.unpublishedAction);
|
||||||
|
private static final String PUBLISHED_ACTION = fieldName(QNewAction.newAction.publishedAction);
|
||||||
|
|
||||||
|
private static final String PATH_DELIMITER = ".";
|
||||||
|
|
||||||
|
public Migration027AddIndexDatasourceIdAndDeletedInAction(MongoTemplate mongoTemplate) {
|
||||||
|
this.mongoTemplate = mongoTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mandatory to declare, but we don't have a use-case for this yet.
|
||||||
|
*/
|
||||||
|
@RollbackExecution
|
||||||
|
public void rollbackExecution() {}
|
||||||
|
|
||||||
|
@Execution
|
||||||
|
public void addIndexInNewActionCollection() {
|
||||||
|
Index publishedIndex = makeIndex(createFullPathName(PUBLISHED_ACTION), FieldName.DELETED, FieldName.DELETED_AT)
|
||||||
|
.named(PUBLISHED_ACTION_COMPOUND_INDEX_DATASOURCE_ID);
|
||||||
|
Index unpublishedIndex = makeIndex(
|
||||||
|
createFullPathName(UNPUBLISHED_ACTION), FieldName.DELETED, FieldName.DELETED_AT)
|
||||||
|
.named(UNPUBLISHED_ACTION_COMPOUND_INDEX_DATASOURCE_ID);
|
||||||
|
|
||||||
|
ensureIndexes(mongoTemplate, NewAction.class, publishedIndex);
|
||||||
|
ensureIndexes(mongoTemplate, NewAction.class, unpublishedIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String createFullPathName(String path) {
|
||||||
|
return path + PATH_DELIMITER + FieldName.DATASOURCE + PATH_DELIMITER + fieldName(QDatasource.datasource.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -375,9 +375,8 @@ public class CustomNewActionRepositoryCEImpl extends BaseAppsmithRepositoryImpl<
|
||||||
fieldName(QNewAction.newAction.publishedAction) + ".datasource._id")
|
fieldName(QNewAction.newAction.publishedAction) + ".datasource._id")
|
||||||
.is(new ObjectId(datasourceId));
|
.is(new ObjectId(datasourceId));
|
||||||
|
|
||||||
Criteria datasourceCriteria = where(FieldName.DELETED_AT)
|
Criteria datasourceCriteria =
|
||||||
.is(null)
|
notDeleted().orOperator(unpublishedDatasourceCriteria, publishedDatasourceCriteria);
|
||||||
.orOperator(unpublishedDatasourceCriteria, publishedDatasourceCriteria);
|
|
||||||
|
|
||||||
Query query = new Query();
|
Query query = new Query();
|
||||||
query.addCriteria(datasourceCriteria);
|
query.addCriteria(datasourceCriteria);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user