package com.leanengine.server.rest; import com.leanengine.server.JsonUtils; import com.leanengine.server.LeanException; import com.leanengine.server.appengine.DatastoreUtils; import com.leanengine.server.entity.LeanQuery; import com.leanengine.server.entity.QueryFilter; import com.leanengine.server.entity.QueryResult; import com.leanengine.server.entity.QuerySort; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.node.ObjectNode; import javax.ws.rs.*; @Path("/v1/query") @Produces("application/json") @Consumes("application/json") public class QueryRest { @POST @Path("/") public JsonNode query(String queryJson) throws LeanException { QueryResult result = DatastoreUtils.queryEntityPrivate(LeanQuery.fromJson(queryJson)); ObjectNode jsonResult = JsonUtils.entityListToJson(result.getResult()); if (result.getCursor() != null) { jsonResult.put("cursor", result.getCursor().toWebSafeString()); } return jsonResult; } @GET @Path("/example") public JsonNode exampleQuery() throws LeanException { LeanQuery query = new LeanQuery("somekind"); query.addFilter("prop1", QueryFilter.FilterOperator.EQUAL, "value1"); query.addFilter("prop2", QueryFilter.FilterOperator.LESS_THAN_OR_EQUAL, 1.23); query.addFilter("prop2", QueryFilter.FilterOperator.GREATER_THAN_OR_EQUAL, 0.5); query.addSort("prop2", QuerySort.SortDirection.ASCENDING); query.addSort("prop3", QuerySort.SortDirection.DESCENDING); return query.toJson(); } }