Skip to content
This repository has been archived by the owner on Jul 27, 2023. It is now read-only.

Allow specify datacenter for prepared queries #273

Merged
merged 1 commit into from
Nov 23, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 55 additions & 7 deletions src/main/java/com/orbitz/consul/PreparedQueryClient.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.orbitz.consul;

import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import com.orbitz.consul.async.Callback;
import com.orbitz.consul.model.query.PreparedQuery;
import com.orbitz.consul.model.query.QueryId;
Expand Down Expand Up @@ -40,7 +41,27 @@ public class PreparedQueryClient {
* @return The ID of the created query.
*/
public String createPreparedQuery(PreparedQuery preparedQuery) {
return extract(api.createPreparedQuery(preparedQuery)).getId();
return createPreparedQuery(preparedQuery, null);
}

/**
* Creates a prepared query.
*
* POST /v1/query
*
* @param preparedQuery The prepared query to create.
* @param dc The data center.
* @return The ID of the created query.
*/
public String createPreparedQuery(PreparedQuery preparedQuery, final String dc) {
return extract(api.createPreparedQuery(preparedQuery, dcQuery(dc))).getId();
}

private Map<String, String> dcQuery(String dc) {
if (dc != null) {
return ImmutableMap.of("dc", dc);
}
return Collections.emptyMap();
}

/**
Expand All @@ -51,7 +72,19 @@ public String createPreparedQuery(PreparedQuery preparedQuery) {
* @return The list of prepared queries.
*/
public List<StoredQuery> getPreparedQueries() {
return extract(api.getPreparedQueries());
return getPreparedQueries(null);
}

/**
* Retrieves the list of prepared queries.
*
* GET /v1/query
*
* @param dc The data center.
* @return The list of prepared queries.
*/
public List<StoredQuery> getPreparedQueries(final String dc) {
return extract(api.getPreparedQueries(dcQuery(dc)));
}

/**
Expand All @@ -63,7 +96,20 @@ public List<StoredQuery> getPreparedQueries() {
* @return The store prepared query.
*/
public Optional<StoredQuery> getPreparedQuery(String id) {
List<StoredQuery> result = extract(api.getPreparedQuery(id));
return getPreparedQuery(id, null);
}

/**
* Retrieves a prepared query by its ID.
*
* GET /v1/query/{id}
*
* @param id The query ID.
* @param dc The data center.
* @return The store prepared query.
*/
public Optional<StoredQuery> getPreparedQuery(String id, final String dc) {
List<StoredQuery> result = extract(api.getPreparedQuery(id, dcQuery(dc)));

return result.isEmpty() ? Optional.<StoredQuery>absent() : Optional.of(result.get(0));
}
Expand Down Expand Up @@ -94,14 +140,16 @@ public void execute(String nameOrId, QueryOptions options, final Callback<QueryR
*/
interface Api {

@GET("query")
Call<List<StoredQuery>> getPreparedQueries();
@GET("query")
Call<List<StoredQuery>> getPreparedQueries(@QueryMap Map<String, String> queryMap);

@POST("query")
Call<QueryId> createPreparedQuery(@Body PreparedQuery preparedQuery);
Call<QueryId> createPreparedQuery(@Body PreparedQuery preparedQuery,
@QueryMap Map<String, String> queryMap);

@GET("query/{id}")
Call<List<StoredQuery>> getPreparedQuery(@Path("id") String id);
Call<List<StoredQuery>> getPreparedQuery(@Path("id") String id,
@QueryMap Map<String, String> queryMap);

@GET("query/{nameOrId}/execute")
Call<QueryResults> execute(@Path("nameOrId") String nameOrId,
Expand Down