use of org.molgenis.emx2.Query in project entity-service by hypertrace.
the class DocStoreConverterTest method testEntityQueryLimitOffsetConversion.
@Test
public void testEntityQueryLimitOffsetConversion() {
int limit = 2;
int offset = 1;
Query query = Query.newBuilder().addEntityId("some id").build();
org.hypertrace.core.documentstore.Query transformedQuery = DocStoreConverter.transform(TENANT_ID, query, Collections.emptyList());
Assertions.assertNull(transformedQuery.getLimit());
Assertions.assertNull(transformedQuery.getOffset());
query = Query.newBuilder().addEntityId("some id").setLimit(limit).setOffset(offset).build();
transformedQuery = DocStoreConverter.transform(TENANT_ID, query, Collections.emptyList());
Assertions.assertEquals(limit, transformedQuery.getLimit());
Assertions.assertEquals(offset, transformedQuery.getOffset());
// zero values will be ignored
query = Query.newBuilder().addEntityId("some id").setLimit(0).setOffset(0).build();
transformedQuery = DocStoreConverter.transform(TENANT_ID, query, Collections.emptyList());
Assertions.assertNull(transformedQuery.getLimit());
Assertions.assertNull(transformedQuery.getOffset());
}
use of org.molgenis.emx2.Query in project entity-service by hypertrace.
the class DocStoreConverterTest method testStringArrayValueTypeColumnNeqAndChain.
@Test
public void testStringArrayValueTypeColumnNeqAndChain() throws JsonProcessingException {
Query query = Query.newBuilder().addEntityId("some id").setFilter(AttributeFilter.newBuilder().setOperator(Operator.AND).addChildFilter(AttributeFilter.newBuilder().setName(ATTRIBUTES_LABELS_FIELD_NAME).setIsMultiValued(true).setOperator(Operator.NEQ).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("l1")))).addChildFilter(AttributeFilter.newBuilder().setName(ATTRIBUTES_LABELS_FIELD_NAME).setIsMultiValued(true).setOperator(Operator.NEQ).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("l2"))))).build();
org.hypertrace.core.documentstore.Query transformedQuery = DocStoreConverter.transform(TENANT_ID, query, Collections.emptyList());
Filter transformedFilter = transformedQuery.getFilter();
Assertions.assertEquals(Filter.Op.AND, transformedFilter.getOp());
Assertions.assertEquals(3, transformedFilter.getChildFilters().length);
Assertions.assertEquals(EntityServiceConstants.ENTITY_ID, transformedFilter.getChildFilters()[1].getFieldName());
Assertions.assertEquals(Collections.singletonList("some id"), transformedFilter.getChildFilters()[1].getValue());
Assertions.assertEquals(Op.AND, transformedFilter.getChildFilters()[2].getOp());
Assertions.assertEquals(ATTRIBUTES_LABELS_FIELD_NAME + ".valueList.values", transformedFilter.getChildFilters()[2].getChildFilters()[0].getFieldName());
Assertions.assertEquals(Op.NEQ, transformedFilter.getChildFilters()[2].getChildFilters()[0].getOp());
Assertions.assertEquals(OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree("{\"value\": {\"string\":\"l1\"}}"), Map.class), transformedFilter.getChildFilters()[2].getChildFilters()[0].getValue());
Assertions.assertEquals(ATTRIBUTES_LABELS_FIELD_NAME + ".valueList.values", transformedFilter.getChildFilters()[2].getChildFilters()[1].getFieldName());
Assertions.assertEquals(Op.NEQ, transformedFilter.getChildFilters()[2].getChildFilters()[1].getOp());
Assertions.assertEquals(OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree("{\"value\": {\"string\":\"l2\"}}"), Map.class), transformedFilter.getChildFilters()[2].getChildFilters()[1].getValue());
}
use of org.molgenis.emx2.Query in project entity-service by hypertrace.
the class DocStoreConverterTest method testStringArrayValueTypeColumnEq.
@Test
public void testStringArrayValueTypeColumnEq() throws JsonProcessingException {
Query query = Query.newBuilder().addEntityId("some id").setFilter(AttributeFilter.newBuilder().setName(ATTRIBUTES_LABELS_FIELD_NAME).setIsMultiValued(true).setOperator(Operator.EQ).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("l1")))).build();
org.hypertrace.core.documentstore.Query transformedQuery = DocStoreConverter.transform(TENANT_ID, query, Collections.emptyList());
Filter transformedFilter = transformedQuery.getFilter();
Assertions.assertEquals(Filter.Op.AND, transformedFilter.getOp());
Assertions.assertEquals(3, transformedFilter.getChildFilters().length);
Assertions.assertEquals(EntityServiceConstants.ENTITY_ID, transformedFilter.getChildFilters()[1].getFieldName());
Assertions.assertEquals(Collections.singletonList("some id"), transformedFilter.getChildFilters()[1].getValue());
Assertions.assertEquals(ATTRIBUTES_LABELS_FIELD_NAME + ".valueList.values", transformedFilter.getChildFilters()[2].getFieldName());
Assertions.assertEquals(Op.EQ, transformedFilter.getChildFilters()[2].getOp());
Assertions.assertEquals(OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree("{\"value\": {\"string\":\"l1\"}}"), Map.class), transformedFilter.getChildFilters()[2].getValue());
}
use of org.molgenis.emx2.Query in project entity-service by hypertrace.
the class DocStoreConverterTest method testFilterNonAttributesFieldNames.
@Test
public void testFilterNonAttributesFieldNames() {
Query query = Query.newBuilder().addEntityId("some id").setFilter(AttributeFilter.newBuilder().setName("API.createdTime").setOperator(Operator.GT).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setLong(1234L).build()).build()).build()).build();
org.hypertrace.core.documentstore.Query transformedQuery = DocStoreConverter.transform(TENANT_ID, query, Collections.emptyList());
Filter transformedFilter = transformedQuery.getFilter();
Assertions.assertEquals(Filter.Op.AND, transformedFilter.getOp());
Assertions.assertEquals(3, transformedFilter.getChildFilters().length);
Assertions.assertEquals(EntityServiceConstants.ENTITY_ID, transformedFilter.getChildFilters()[1].getFieldName());
Assertions.assertEquals(Collections.singletonList("some id"), transformedFilter.getChildFilters()[1].getValue());
Assertions.assertEquals("API.createdTime", transformedFilter.getChildFilters()[2].getFieldName());
Assertions.assertEquals(Filter.Op.GT, transformedFilter.getChildFilters()[2].getOp());
Assertions.assertEquals(1234L, transformedFilter.getChildFilters()[2].getValue());
}
use of org.molgenis.emx2.Query in project entity-service by hypertrace.
the class DocStoreConverterTest method testEqFilterConversionForValueList.
@Test
public void testEqFilterConversionForValueList() throws IOException {
Query query = Query.newBuilder().setFilter(AttributeFilter.newBuilder().setName(EntityConstants.ATTRIBUTES_MAP_PATH).setOperator(Operator.EQ).setAttributeValue(AttributeValue.newBuilder().setValueList(AttributeValueList.newBuilder().addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("{\"a1\":\"v1\"}"))).addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("{\"a2\":\"v2\"}"))).addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("{\"a3\":\"v3\"}")))).build()).build()).build();
org.hypertrace.core.documentstore.Query transformedQuery = DocStoreConverter.transform(TENANT_ID, query, Collections.emptyList());
Filter transformedFilter = transformedQuery.getFilter();
Assertions.assertEquals(Filter.Op.AND, transformedFilter.getOp());
Assertions.assertEquals(2, transformedFilter.getChildFilters().length);
Assertions.assertEquals("attributes.valueList.values", transformedFilter.getChildFilters()[1].getFieldName());
Assertions.assertEquals(Filter.Op.EQ, transformedFilter.getChildFilters()[1].getOp());
// I am not sure what if the value conversion is correct for this but will not modify it this
// time. Will leave and test
// the logic as is for now.
Assertions.assertEquals(List.of(OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree(JSONFORMAT_PRINTER.print(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("{\"a1\":\"v1\"}")))), Map.class), OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree(JSONFORMAT_PRINTER.print(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("{\"a2\":\"v2\"}")))), Map.class), OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree(JSONFORMAT_PRINTER.print(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("{\"a3\":\"v3\"}")))), Map.class)), transformedFilter.getChildFilters()[1].getValue());
}
Aggregations