diff --git a/app/server/src/main/java/com/mobtools/server/controllers/QueryController.java b/app/server/src/main/java/com/mobtools/server/controllers/QueryController.java index f4e7544832..3645b1e591 100644 --- a/app/server/src/main/java/com/mobtools/server/controllers/QueryController.java +++ b/app/server/src/main/java/com/mobtools/server/controllers/QueryController.java @@ -17,8 +17,8 @@ public class QueryController extends BaseController super(service); } - @PostMapping("/execute/{id}") - public Flux executeQuery(@PathVariable String id, @RequestBody CommandQueryParams params) { - return service.executeQuery(id, params); + @PostMapping("/execute/{name}") + public Flux executeQuery(@PathVariable String name, @RequestBody CommandQueryParams params) { + return service.executeQuery(name, params); } } diff --git a/app/server/src/main/java/com/mobtools/server/domains/Query.java b/app/server/src/main/java/com/mobtools/server/domains/Query.java index 6e83482ca5..d5fdafe5d1 100644 --- a/app/server/src/main/java/com/mobtools/server/domains/Query.java +++ b/app/server/src/main/java/com/mobtools/server/domains/Query.java @@ -4,6 +4,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; +import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.DBRef; import org.springframework.data.mongodb.core.mapping.Document; @@ -25,7 +26,10 @@ public class Query extends BaseDomain { String confirmationMsg; + @Indexed(unique = true) String name; List properties; + + List headers; } diff --git a/app/server/src/main/java/com/mobtools/server/repositories/QueryRepository.java b/app/server/src/main/java/com/mobtools/server/repositories/QueryRepository.java index 2e4a204457..3bdad6f42a 100644 --- a/app/server/src/main/java/com/mobtools/server/repositories/QueryRepository.java +++ b/app/server/src/main/java/com/mobtools/server/repositories/QueryRepository.java @@ -2,7 +2,10 @@ package com.mobtools.server.repositories; import com.mobtools.server.domains.Query; import org.springframework.stereotype.Repository; +import reactor.core.publisher.Mono; @Repository public interface QueryRepository extends BaseRepository { + + Mono findByName(String name); } diff --git a/app/server/src/main/java/com/mobtools/server/services/QueryService.java b/app/server/src/main/java/com/mobtools/server/services/QueryService.java index 2442a8d6b2..43d56e6bdc 100644 --- a/app/server/src/main/java/com/mobtools/server/services/QueryService.java +++ b/app/server/src/main/java/com/mobtools/server/services/QueryService.java @@ -6,5 +6,5 @@ import reactor.core.publisher.Flux; public interface QueryService extends CrudService { - Flux executeQuery(String id, CommandQueryParams params); + Flux executeQuery(String name, CommandQueryParams params); } diff --git a/app/server/src/main/java/com/mobtools/server/services/QueryServiceImpl.java b/app/server/src/main/java/com/mobtools/server/services/QueryServiceImpl.java index 76eb5db1dd..5752fec89f 100644 --- a/app/server/src/main/java/com/mobtools/server/services/QueryServiceImpl.java +++ b/app/server/src/main/java/com/mobtools/server/services/QueryServiceImpl.java @@ -31,12 +31,12 @@ public class QueryServiceImpl extends BaseService executeQuery(String id, CommandQueryParams params) { - log.debug("Going to execute query with id: {}", id); + public Flux executeQuery(String name, CommandQueryParams params) { + log.debug("Going to execute query with name: {}", name); // 1. Fetch the query from the DB to get the type - Mono queryMono = repository.findById(id) - .switchIfEmpty(Mono.defer(() -> Mono.error(new MobtoolsException("Unable to find query by id: " + id)))); + Mono queryMono = repository.findByName(name) + .switchIfEmpty(Mono.defer(() -> Mono.error(new MobtoolsException("Unable to find query by id: " + name)))); // 2. Instantiate the implementation class based on the query type Mono pluginExecutorMono = queryMono.map(queryObj -> @@ -50,5 +50,4 @@ public class QueryServiceImpl extends BaseService