Пример #1
0
 def property_filters() -> List[PropertyFilter]:
     return [
         PropertyFilter(prop='prop1',
                        operator=PropertyFilterOperator.LESS_THAN,
                        value=Value('value1')),
         PropertyFilter(prop='prop2',
                        operator=PropertyFilterOperator.GREATER_THAN,
                        value=Value(1234))
     ]
Пример #2
0
async def test_query(creds: str, kind: str, project: str) -> None:
    async with Session() as s:
        ds = Datastore(project=project, service_file=creds, session=s)

        property_filter = PropertyFilter(prop='value',
                                         operator=PropertyFilterOperator.EQUAL,
                                         value=Value(42))
        query = Query(kind=kind, query_filter=Filter(property_filter))

        before = await ds.runQuery(query, session=s)
        num_results = len(before.entity_results)

        transaction = await ds.beginTransaction(session=s)
        mutations = [
            ds.make_mutation(Operation.INSERT,
                             Key(project, [PathElement(kind)]),
                             properties={'value': 42}),
            ds.make_mutation(Operation.INSERT,
                             Key(project, [PathElement(kind)]),
                             properties={'value': 42}),
        ]
        await ds.commit(mutations, transaction=transaction, session=s)

        after = await ds.runQuery(query, session=s)
        assert len(after.entity_results) == num_results + 2
Пример #3
0
    def test_property_filter_from_repr(property_filters):
        original_filter = property_filters[0]
        data = {
            'property': {
                'name': original_filter.prop
            },
            'op': original_filter.operator,
            'value': original_filter.value.to_repr()
        }

        output_filter = PropertyFilter.from_repr(data)

        assert output_filter == original_filter
Пример #4
0
async def test_query_with_key_projection(creds: str, kind: str,
                                         project: str) -> None:
    async with Session() as s:
        ds = Datastore(project=project, service_file=creds, session=s)
        # setup test data
        await ds.insert(Key(project, [PathElement(kind)]), {'value': 30}, s)
        property_filter = PropertyFilter(
            prop='value', operator=PropertyFilterOperator.EQUAL,
            value=Value(30))
        projection = [Projection.from_repr({'property': {'name': '__key__'}})]

        query = Query(kind=kind, query_filter=Filter(property_filter), limit=1,
                      projection=projection)
        result = await ds.runQuery(query, session=s)
        assert result.entity_results[0].entity.properties == {}
        assert result.entity_result_type.value == 'KEY_ONLY'
        # clean up test data
        await ds.delete(result.entity_results[0].entity.key, s)
Пример #5
0
 def query_filter() -> Filter:
     inner_filter = PropertyFilter(
         prop='property_name',
         operator=PropertyFilterOperator.EQUAL,
         value=Value(123))
     return Filter(inner_filter)