chore: consolidated response of block API (#34167)

## Description
Return all the entities created as a part of the building block import

Fixes #34122

## Automation

/ok-to-test tags="@tag.Templates"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9482200897>
> Commit: b78a8e5bab9c5191448593de958068477008c3d0
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9482200897&attempt=1"
target="_blank">Click here!</a>

<!-- end of auto-generated comment: Cypress test results  -->








## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced import functionality to include new lists for actions, action
collections, datasources, and custom JavaScript libraries.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Anagh Hegde 2024-06-12 19:53:51 +05:30 committed by GitHub
parent b61577da47
commit ed8a4eba68
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 62 additions and 8 deletions

View File

@ -1,6 +1,10 @@
package com.appsmith.server.dtos;
import com.appsmith.external.dtos.DslExecutableDTO;
import com.appsmith.external.models.Datasource;
import com.appsmith.server.domains.ActionCollection;
import com.appsmith.server.domains.CustomJSLib;
import com.appsmith.server.domains.NewAction;
import lombok.Data;
import java.util.List;
@ -10,4 +14,16 @@ public class BuildingBlockResponseDTO {
String widgetDsl;
List<DslExecutableDTO> onPageLoadActions;
// New actions created in the current flow
List<NewAction> newActionList;
// New actionCollection created in the current flow
List<ActionCollection> actionCollectionList;
// All datasource in the workspace
List<Datasource> datasourceList;
// All libraries used in the current application
List<CustomJSLib> customJSLibList;
}

View File

@ -8,6 +8,7 @@ import com.appsmith.server.acl.AclPermission;
import com.appsmith.server.actioncollections.base.ActionCollectionService;
import com.appsmith.server.applications.base.ApplicationService;
import com.appsmith.server.constants.FieldName;
import com.appsmith.server.datasources.base.DatasourceService;
import com.appsmith.server.domains.ActionCollection;
import com.appsmith.server.domains.Application;
import com.appsmith.server.domains.CustomJSLib;
@ -28,6 +29,7 @@ import com.appsmith.server.exceptions.AppsmithException;
import com.appsmith.server.helpers.ImportArtifactPermissionProvider;
import com.appsmith.server.imports.importable.ImportableService;
import com.appsmith.server.imports.internal.ImportService;
import com.appsmith.server.jslibs.base.CustomJSLibService;
import com.appsmith.server.newactions.base.NewActionService;
import com.appsmith.server.newpages.base.NewPageService;
import com.appsmith.server.refactors.applications.RefactoringService;
@ -90,6 +92,8 @@ public class PartialImportServiceCEImpl implements PartialImportServiceCE {
private final ApplicationPageService applicationPageService;
private final NewActionService newActionService;
private final ActionCollectionService actionCollectionService;
private final DatasourceService datasourceService;
private final CustomJSLibService customJSLibService;
@Override
public Mono<Application> importResourceInPage(
@ -469,18 +473,46 @@ public class PartialImportServiceCEImpl implements PartialImportServiceCE {
}
});
});
// Fetch the datasource and customJsLibs
Mono<List<Datasource>> datasourceList = datasourceService
.getAllByWorkspaceIdWithStorages(
buildingBlockDTO.getWorkspaceId(), AclPermission.MANAGE_DATASOURCES)
.collectList();
Mono<List<CustomJSLib>> customJSLibs = customJSLibService.getAllJSLibsInContext(
buildingBlockDTO.getApplicationId(), CreatorContextType.APPLICATION, branchName, false);
// Fetch all actions and action collections and update the onPageLoadActions with correct ids
return actionCollectionService
return Mono.zip(
actionCollectionService
.findByPageId(buildingBlockDTO.getPageId())
.collectList()
.zipWith(newActionService
.collectList(),
newActionService
.findByPageId(buildingBlockDTO.getPageId())
.collectList())
.collectList(),
datasourceList,
customJSLibs)
.flatMap(tuple -> {
List<ActionCollection> actionCollections = tuple.getT1();
List<NewAction> newActions = tuple.getT2();
buildingBlockResponseDTO.setDatasourceList(tuple.getT3());
buildingBlockResponseDTO.setCustomJSLibList(tuple.getT4());
// Filter the newly created actions and actionCollection
buildingBlockResponseDTO.setNewActionList(newActions.stream()
.filter(newAction -> buildingBlockImportDTO
.getRefactoredEntityNameMap()
.containsValue(newAction
.getUnpublishedAction()
.getName()))
.toList());
buildingBlockResponseDTO.setActionCollectionList(actionCollections.stream()
.filter(actionCollection -> buildingBlockImportDTO
.getRefactoredEntityNameMap()
.containsValue(actionCollection
.getUnpublishedCollection()
.getName()))
.toList());
actionCollections.forEach(actionCollection -> {
if (newOnPageLoadActionNames.contains(actionCollection
.getUnpublishedCollection()

View File

@ -3,6 +3,7 @@ package com.appsmith.server.imports.internal.partial;
import com.appsmith.external.models.Datasource;
import com.appsmith.server.actioncollections.base.ActionCollectionService;
import com.appsmith.server.applications.base.ApplicationService;
import com.appsmith.server.datasources.base.DatasourceService;
import com.appsmith.server.domains.ActionCollection;
import com.appsmith.server.domains.CustomJSLib;
import com.appsmith.server.domains.NewAction;
@ -10,6 +11,7 @@ import com.appsmith.server.domains.NewPage;
import com.appsmith.server.domains.Plugin;
import com.appsmith.server.imports.importable.ImportableService;
import com.appsmith.server.imports.internal.ImportService;
import com.appsmith.server.jslibs.base.CustomJSLibService;
import com.appsmith.server.newactions.base.NewActionService;
import com.appsmith.server.newpages.base.NewPageService;
import com.appsmith.server.refactors.applications.RefactoringService;
@ -60,7 +62,9 @@ public class PartialImportServiceImpl extends PartialImportServiceCEImpl impleme
WidgetRefactorUtil widgetRefactorUtil,
ApplicationPageService applicationPageService,
NewActionService newActionService,
ActionCollectionService actionCollectionService) {
ActionCollectionService actionCollectionService,
DatasourceService datasourceService,
CustomJSLibService customJSLibService) {
super(
importService,
workspaceService,
@ -86,6 +90,8 @@ public class PartialImportServiceImpl extends PartialImportServiceCEImpl impleme
widgetRefactorUtil,
applicationPageService,
newActionService,
actionCollectionService);
actionCollectionService,
datasourceService,
customJSLibService);
}
}