spring-data-couchbase icon indicating copy to clipboard operation
spring-data-couchbase copied to clipboard

implement AnalyticsQuery

Open mikereiche opened this issue 3 years ago • 0 comments

package org.springframework.data.couchbase.core.query;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.couchbase.core.CouchbaseTemplate;
import org.springframework.data.couchbase.domain.Airport;
import org.springframework.data.couchbase.domain.Config;
import org.springframework.data.couchbase.util.Capabilities;
import org.springframework.data.couchbase.util.ClusterType;
import org.springframework.data.couchbase.util.IgnoreWhen;
import org.springframework.data.couchbase.util.JavaIntegrationTests;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;

import com.couchbase.client.java.query.QueryOptions;
import com.couchbase.client.java.query.QueryScanConsistency;

import java.util.List;

@IgnoreWhen(missesCapabilities = Capabilities.QUERY, clusterTypes = ClusterType.MOCKED)
@SpringJUnitConfig(Config.class)
public class queryExample extends JavaIntegrationTests {
	@Autowired CouchbaseTemplate template;

	@Test
	public void queryTest() {
		N1QLExpression expression = N1QLExpression.x("SQL++ Query");
		N1QLQuery query = buildQuery(expression, QueryScanConsistency.REQUEST_PLUS);
		List<Airport> airports = template.findByQuery(Airport.class).matching(query).all();
		System.err.println("airports: "+airports);
	}

	public static N1QLQuery buildQuery(N1QLExpression expression, QueryScanConsistency scanConsistency) {
		QueryOptions opts = QueryOptions.queryOptions().scanConsistency(scanConsistency);
		return new N1QLQuery(expression, opts);
	}

	@Test
	public void analyticsTest() {
		N1QLExpression expression = N1QLExpression.x("SQL++ Query");
		AnalyticsQuery query = buildAnalytics(expression, QueryScanConsistency.REQUEST_PLUS);
		List<Airport> airports = template.findByQuery(Airport.class).matching(query).all();
		System.err.println("airports: "+airports);
	}

	private AnalyticsQuery buildAnalytics(N1QLExpression expression, QueryScanConsistency scanConsistency) {
		QueryOptions opts = QueryOptions.queryOptions().scanConsistency(scanConsistency);
		return new AnalyticsQuery(expression, opts);
	}

}

mikereiche avatar Jul 12 '22 15:07 mikereiche