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)) ]
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
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
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)
def query_filter() -> Filter: inner_filter = PropertyFilter( prop='property_name', operator=PropertyFilterOperator.EQUAL, value=Value(123)) return Filter(inner_filter)