use of org.hypertrace.core.documentstore.Filter in project document-store by hypertrace.
the class MongoCollectionTest method testTotalWithFilter.
@Test
public void testTotalWithFilter() {
Query query = new Query();
Filter filter = new Filter(Filter.Op.EQ, "key1", "val1");
query.setFilter(filter);
mongoCollection.total(query);
verify(collection, times(1)).countDocuments(any(BasicDBObject.class));
}
use of org.hypertrace.core.documentstore.Filter in project entity-service by hypertrace.
the class EntityTypeServiceImpl method transform.
private static Query transform(String tenantId, EntityTypeFilter filter, boolean useTenantHierarchy) {
Query docStoreQuery = new Query();
List<Filter> filters = new ArrayList<>();
filters.add(getTenantIdFilter(tenantId, useTenantHierarchy));
if (!filter.getNameList().isEmpty()) {
filters.add(new Filter(Op.IN, NAME, filter.getNameList()));
}
if (!filters.isEmpty()) {
if (filters.size() == 1) {
docStoreQuery.setFilter(filters.get(0));
} else {
Filter f = new Filter();
f.setOp(Filter.Op.AND);
f.setChildFilters(filters.toArray(new Filter[] {}));
docStoreQuery.setFilter(f);
}
}
return docStoreQuery;
}
use of org.hypertrace.core.documentstore.Filter in project entity-service by hypertrace.
the class EntityTypeServiceImpl method transform.
private static Query transform(String tenantId, List<String> entityTypeNames) {
Query docStoreQuery = new Query();
List<Filter> filters = new ArrayList<>();
filters.add(new Filter(Op.IN, EntityServiceConstants.TENANT_ID, TenantUtils.getTenantHierarchy(tenantId)));
if (!entityTypeNames.isEmpty()) {
filters.add(new Filter(Op.IN, EntityServiceConstants.NAME, entityTypeNames));
}
if (filters.size() == 1) {
docStoreQuery.setFilter(filters.get(0));
} else {
Filter f = new Filter();
f.setOp(Filter.Op.AND);
f.setChildFilters(filters.toArray(new Filter[] {}));
docStoreQuery.setFilter(f);
}
return docStoreQuery;
}
use of org.hypertrace.core.documentstore.Filter in project entity-service by hypertrace.
the class DocStoreConverterTest method testStringArrayValueTypeColumnOrChain.
@Test
public void testStringArrayValueTypeColumnOrChain() throws JsonProcessingException {
Query query = Query.newBuilder().addEntityId("some id").setFilter(AttributeFilter.newBuilder().setOperator(Operator.AND).addChildFilter(AttributeFilter.newBuilder().setName("attributes.some_col").setOperator(Operator.EQ).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("some_val")))).addChildFilter(AttributeFilter.newBuilder().setName(ATTRIBUTES_LABELS_FIELD_NAME).setIsMultiValued(true).setOperator(Operator.IN).setAttributeValue(AttributeValue.newBuilder().setValueList(AttributeValueList.newBuilder().addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("l1"))).addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("l2"))).addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("l3"))))))).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.some_col.value.string", transformedFilter.getChildFilters()[2].getChildFilters()[0].getFieldName());
Assertions.assertEquals(Op.EQ, transformedFilter.getChildFilters()[2].getChildFilters()[0].getOp());
Assertions.assertEquals("some_val", transformedFilter.getChildFilters()[2].getChildFilters()[0].getValue());
Assertions.assertEquals(Op.OR, transformedFilter.getChildFilters()[2].getChildFilters()[1].getOp());
Assertions.assertEquals(ATTRIBUTES_LABELS_FIELD_NAME + ".valueList.values", transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[0].getFieldName());
Assertions.assertEquals(Op.EQ, transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[0].getOp());
Assertions.assertEquals(OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree("{\"value\": {\"string\":\"l1\"}}"), Map.class), transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[0].getValue());
Assertions.assertEquals(ATTRIBUTES_LABELS_FIELD_NAME + ".valueList.values", transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[1].getFieldName());
Assertions.assertEquals(Op.EQ, transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[1].getOp());
Assertions.assertEquals(OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree("{\"value\": {\"string\":\"l2\"}}"), Map.class), transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[1].getValue());
Assertions.assertEquals(ATTRIBUTES_LABELS_FIELD_NAME + ".valueList.values", transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[2].getFieldName());
Assertions.assertEquals(Op.EQ, transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[2].getOp());
Assertions.assertEquals(OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree("{\"value\": {\"string\":\"l3\"}}"), Map.class), transformedFilter.getChildFilters()[2].getChildFilters()[1].getChildFilters()[2].getValue());
}
use of org.hypertrace.core.documentstore.Filter in project entity-service by hypertrace.
the class DocStoreConverterTest method testEntityFieldAndAttributeValueConversion.
@Test
public void testEntityFieldAndAttributeValueConversion() {
Query query = Query.newBuilder().addEntityId("some id").setFilter(AttributeFilter.newBuilder().setName(EntityConstants.ATTRIBUTES_MAP_PATH).setOperator(Operator.CONTAINS).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("stringValue").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("attributes.value.string", transformedFilter.getChildFilters()[2].getFieldName());
Assertions.assertEquals(Filter.Op.CONTAINS, transformedFilter.getChildFilters()[2].getOp());
Assertions.assertEquals("stringValue", transformedFilter.getChildFilters()[2].getValue());
}
Aggregations