Search in sources :

Example 6 with Filter

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));
}
Also used : BasicDBObject(com.mongodb.BasicDBObject) Query(org.hypertrace.core.documentstore.Query) Filter(org.hypertrace.core.documentstore.Filter) Test(org.junit.jupiter.api.Test)

Example 7 with Filter

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;
}
Also used : Query(org.hypertrace.core.documentstore.Query) EntityTypeFilter(org.hypertrace.entity.type.service.v1.EntityTypeFilter) Filter(org.hypertrace.core.documentstore.Filter) EntityRelationshipTypeFilter(org.hypertrace.entity.type.service.v1.EntityRelationshipTypeFilter) ArrayList(java.util.ArrayList)

Example 8 with Filter

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;
}
Also used : Query(org.hypertrace.core.documentstore.Query) Filter(org.hypertrace.core.documentstore.Filter) ArrayList(java.util.ArrayList)

Example 9 with Filter

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());
}
Also used : Query(org.hypertrace.entity.data.service.v1.Query) AttributeFilter(org.hypertrace.entity.data.service.v1.AttributeFilter) Filter(org.hypertrace.core.documentstore.Filter) Map(java.util.Map) Test(org.junit.jupiter.api.Test)

Example 10 with Filter

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());
}
Also used : Query(org.hypertrace.entity.data.service.v1.Query) AttributeFilter(org.hypertrace.entity.data.service.v1.AttributeFilter) Filter(org.hypertrace.core.documentstore.Filter) Test(org.junit.jupiter.api.Test)

Aggregations

Filter (org.hypertrace.core.documentstore.Filter)38 AttributeFilter (org.hypertrace.entity.data.service.v1.AttributeFilter)20 Test (org.junit.jupiter.api.Test)19 Query (org.hypertrace.entity.data.service.v1.Query)18 ArrayList (java.util.ArrayList)12 Map (java.util.Map)9 Query (org.hypertrace.core.documentstore.Query)9 JSONDocument (org.hypertrace.core.documentstore.JSONDocument)7 Document (org.hypertrace.core.documentstore.Document)6 Collection (org.hypertrace.core.documentstore.Collection)5 MongoCollection (com.mongodb.client.MongoCollection)4 IOException (java.io.IOException)4 List (java.util.List)4 SingleValueKey (org.hypertrace.core.documentstore.SingleValueKey)4 JsonNode (com.fasterxml.jackson.databind.JsonNode)3 GeneratedMessageV3 (com.google.protobuf.GeneratedMessageV3)3 BasicDBObject (com.mongodb.BasicDBObject)3 Collections (java.util.Collections)3 Optional (java.util.Optional)3 Collectors (java.util.stream.Collectors)3