Merge branch 'release' of github.com:appsmithorg/appsmith into release
This commit is contained in:
commit
fbf4e4f7d2
|
|
@ -5,6 +5,7 @@ import com.appsmith.server.constants.Url;
|
|||
import com.appsmith.server.domains.Action;
|
||||
import com.appsmith.server.domains.Layout;
|
||||
import com.appsmith.server.dtos.ActionMoveDTO;
|
||||
import com.appsmith.server.dtos.ActionViewDTO;
|
||||
import com.appsmith.server.dtos.ExecuteActionDTO;
|
||||
import com.appsmith.server.dtos.RefactorNameDTO;
|
||||
import com.appsmith.server.dtos.ResponseDTO;
|
||||
|
|
@ -14,17 +15,20 @@ import com.appsmith.server.services.LayoutActionService;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(Url.ACTION_URL)
|
||||
|
|
@ -77,4 +81,10 @@ public class ActionController extends BaseController<ActionService, Action, Stri
|
|||
return layoutActionService.refactorActionName(refactorNameDTO)
|
||||
.map(created -> new ResponseDTO<>(HttpStatus.OK.value(), created, null));
|
||||
}
|
||||
|
||||
@GetMapping("/view")
|
||||
public Mono<ResponseDTO<List<ActionViewDTO>>> getActionsForViewMode(@RequestParam String applicationId) {
|
||||
return service.getActionsForViewMode(applicationId).collectList()
|
||||
.map(actions -> new ResponseDTO<>(HttpStatus.OK.value(), actions, null));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package com.appsmith.server.dtos;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public class ActionViewDTO {
|
||||
String id;
|
||||
String name;
|
||||
Set<String> jsonPathKeys;
|
||||
}
|
||||
|
|
@ -3,10 +3,12 @@ package com.appsmith.server.services;
|
|||
import com.appsmith.external.models.ActionExecutionResult;
|
||||
import com.appsmith.server.acl.AclPermission;
|
||||
import com.appsmith.server.domains.Action;
|
||||
import com.appsmith.server.dtos.ActionViewDTO;
|
||||
import com.appsmith.server.dtos.ExecuteActionDTO;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
|
@ -30,4 +32,6 @@ public interface ActionService extends CrudService<Action, String> {
|
|||
|
||||
Flux<Action> findByPageId(String pageId, AclPermission permission);
|
||||
|
||||
Flux<ActionViewDTO> getActionsForViewMode(String applicationId);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import com.appsmith.server.domains.Page;
|
|||
import com.appsmith.server.domains.Plugin;
|
||||
import com.appsmith.server.domains.PluginType;
|
||||
import com.appsmith.server.domains.User;
|
||||
import com.appsmith.server.dtos.ActionViewDTO;
|
||||
import com.appsmith.server.dtos.ExecuteActionDTO;
|
||||
import com.appsmith.server.exceptions.AppsmithError;
|
||||
import com.appsmith.server.exceptions.AppsmithException;
|
||||
|
|
@ -515,6 +516,33 @@ public class ActionServiceImpl extends BaseService<ActionRepository, Action, Str
|
|||
return repository.findByPageId(pageId, permission);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Flux<ActionViewDTO> getActionsForViewMode(String applicationId) {
|
||||
Sort sort = Sort.by(FieldName.NAME);
|
||||
if (applicationId == null || applicationId.isEmpty()) {
|
||||
return Flux.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, FieldName.APPLICATION_ID));
|
||||
}
|
||||
|
||||
return pageService
|
||||
.findNamesByApplicationId(applicationId)
|
||||
.switchIfEmpty(Mono.error(new AppsmithException(
|
||||
AppsmithError.NO_RESOURCE_FOUND, "pages for application", applicationId))
|
||||
)
|
||||
.map(applicationPagesDTO -> applicationPagesDTO.getPages())
|
||||
.flatMapMany(Flux::fromIterable)
|
||||
.map(pageNameIdDTO -> pageNameIdDTO.getId())
|
||||
.collectList()
|
||||
.flatMapMany(pages -> repository.findAllActionsByNameAndPageIds(null, pages, READ_ACTIONS, sort))
|
||||
.map(action -> {
|
||||
ActionViewDTO actionViewDTO = new ActionViewDTO();
|
||||
actionViewDTO.setId(action.getId());
|
||||
actionViewDTO.setName(action.getName());
|
||||
actionViewDTO.setJsonPathKeys(new HashSet<>());
|
||||
actionViewDTO.getJsonPathKeys().addAll(action.getJsonPathKeys());
|
||||
return actionViewDTO;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<Action> delete(String id) {
|
||||
Mono<Action> actionMono = repository.findById(id)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import com.appsmith.server.domains.Page;
|
|||
import com.appsmith.server.domains.Plugin;
|
||||
import com.appsmith.server.domains.User;
|
||||
import com.appsmith.server.dtos.ActionMoveDTO;
|
||||
import com.appsmith.server.dtos.ActionViewDTO;
|
||||
import com.appsmith.server.dtos.ExecuteActionDTO;
|
||||
import com.appsmith.server.exceptions.AppsmithError;
|
||||
import com.appsmith.server.exceptions.AppsmithException;
|
||||
|
|
@ -43,8 +44,10 @@ import reactor.test.StepVerifier;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.appsmith.server.acl.AclPermission.MANAGE_ACTIONS;
|
||||
import static com.appsmith.server.acl.AclPermission.READ_ACTIONS;
|
||||
|
|
@ -454,6 +457,36 @@ public class ActionServiceTest {
|
|||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithUserDetails(value = "api_user")
|
||||
public void checkActionInViewMode() {
|
||||
Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(new MockPluginExecutor()));
|
||||
|
||||
String key = "bodyMustacheKey";
|
||||
Action action = new Action();
|
||||
action.setName("actionInViewMode");
|
||||
action.setPageId(testPage.getId());
|
||||
ActionConfiguration actionConfiguration = new ActionConfiguration();
|
||||
actionConfiguration.setHttpMethod(HttpMethod.GET);
|
||||
actionConfiguration.setBody("{{"+key+"}}");
|
||||
action.setActionConfiguration(actionConfiguration);
|
||||
action.setDatasource(datasource);
|
||||
|
||||
Mono<List<ActionViewDTO>> actionsListMono = actionService.create(action)
|
||||
.then(actionService.getActionsForViewMode(testApp.getId()).collectList());
|
||||
|
||||
StepVerifier
|
||||
.create(actionsListMono)
|
||||
.assertNext(actionsList -> {
|
||||
assertThat(actionsList.size()).isGreaterThan(0);
|
||||
ActionViewDTO actionViewDTO = actionsList.stream().filter(action1 -> action1.getName().equals(action.getName())).findFirst().get();
|
||||
|
||||
assertThat(actionViewDTO).isNotNull();
|
||||
assertThat(actionViewDTO.getJsonPathKeys()).containsAll(Set.of(key));
|
||||
})
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
private void executeAndAssertAction(ExecuteActionDTO executeActionDTO, ActionConfiguration actionConfiguration, ActionExecutionResult mockResult) {
|
||||
|
||||
Mono<ActionExecutionResult> actionExecutionResultMono = executeAction(executeActionDTO, actionConfiguration, mockResult);
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ declare -A osInfo;
|
|||
osInfo[/etc/debian_version]="apt-get"
|
||||
osInfo[/etc/centos-release]="yum"
|
||||
osInfo[/etc/redhat-release]="yum"
|
||||
osInfo[/System/Library/CoreServices/SystemVersion.plist]="brew"
|
||||
|
||||
# Checking OS and assiging package manager
|
||||
desired_os=0
|
||||
|
|
@ -105,6 +106,8 @@ if [ $setup_domain == "Y" -o $setup_domain == "y" -o $setup_domain == "yes" -o $
|
|||
echo "Would you like to provision an SSL certificate for your custom domain / subdomain?"
|
||||
read -p '(Your DNS records must be updated for us to provision SSL) [Y/n]: ' setup_ssl
|
||||
setup_ssl=${setup_ssl:-Y}
|
||||
else
|
||||
setup_ssl="n"
|
||||
fi
|
||||
|
||||
if [ $setup_ssl == "Y" -o $setup_ssl == "y" -o $setup_ssl == "yes" -o $setup_ssl == "Yes" ];then
|
||||
|
|
@ -127,11 +130,18 @@ cd ..
|
|||
|
||||
# Role - Docker
|
||||
if ! is_command_present docker ;then
|
||||
install_docker
|
||||
if [ $package_manager == "apt-get" -o $package_manager == "yum" ];then
|
||||
install_docker
|
||||
else
|
||||
echo "Please follow below link to Install Docker Desktop on Mac:"
|
||||
echo "https://docs.docker.com/docker-for-mac/install/"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Starting docker service
|
||||
start_docker
|
||||
if [ $package_manager == "yum" -o $package_manager == "apt-get" ];then
|
||||
start_docker
|
||||
fi
|
||||
|
||||
# Role - Folder
|
||||
for directory_name in nginx certbot mongo/db opa/config appsmith-server/config
|
||||
|
|
@ -202,4 +212,4 @@ echo " cd $install_dir && sudo docker-compose ps -a"
|
|||
echo -e "Peace out \U1F596"
|
||||
echo ""
|
||||
echo "Need help troubleshooting?"
|
||||
echo "Join our discord server https://discord.com/invite/rBTTVJp"
|
||||
echo "Join our discord server https://discord.com/invite/rBTTVJp"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user