@Override public EntityQuery build() { return new EntityQuery(this); } }
@Test public void testEntityQueryBuilder() { compareBaseBuilderFields(ENTITY_QUERY); assertTrue(ENTITY_QUERY.getProjection().isEmpty()); assertTrue(ENTITY_QUERY.getDistinctOn().isEmpty()); }
@Test public void testToAndFromPb() { assertEquals( ENTITY_QUERY, StructuredQuery.fromPb( ResultType.ENTITY, ENTITY_QUERY.getNamespace(), ENTITY_QUERY.toPb())); assertEquals( KEY_QUERY, StructuredQuery.fromPb(ResultType.KEY, KEY_QUERY.getNamespace(), KEY_QUERY.toPb())); assertEquals( PROJECTION_QUERY, StructuredQuery.fromPb( ResultType.PROJECTION_ENTITY, PROJECTION_QUERY.getNamespace(), PROJECTION_QUERY.toPb())); }
Set<WorkflowId> enabled() throws IOException { final EntityQuery queryWorkflows = EntityQuery.newEntityQueryBuilder().setKind(KIND_WORKFLOW).build(); final Set<WorkflowId> enabledWorkflows = Sets.newHashSet(); datastore.query(queryWorkflows, workflow -> { final boolean enabled = workflow.contains(PROPERTY_WORKFLOW_ENABLED) && workflow.getBoolean(PROPERTY_WORKFLOW_ENABLED); if (enabled) { enabledWorkflows.add(parseWorkflowId(workflow)); } }); return enabledWorkflows; }
@Test public void testKeyOnly() { assertTrue(KEY_QUERY.isKeyOnly()); assertFalse(ENTITY_QUERY.isKeyOnly()); assertFalse(PROJECTION_QUERY.isKeyOnly()); } }
@Test public void mergeFrom() { compareMergedQuery( ENTITY_QUERY, new EntityQuery.Builder().mergeFrom(ENTITY_QUERY.toPb()).build()); compareMergedQuery(KEY_QUERY, new KeyQuery.Builder().mergeFrom(KEY_QUERY.toPb()).build()); compareMergedQuery( PROJECTION_QUERY, new ProjectionEntityQuery.Builder().mergeFrom(PROJECTION_QUERY.toPb()).build()); }
private void deleteShardsForCounter(String counterId) throws IOException { final List<Key> shards = new ArrayList<>(); datastore.query(EntityQuery.newEntityQueryBuilder() .setKind(KIND_COUNTER_SHARD) .setFilter(PropertyFilter.eq(PROPERTY_COUNTER_ID, counterId)) .build(), entity -> shards.add(entity.getKey())); // this is a safe guard to not to exceed max number of entities in one batch write // because in practice number of shards is much smaller for (List<Key> batch : Lists.partition(shards, MAX_NUMBER_OF_ENTITIES_IN_ONE_BATCH_WRITE)) { storeWithRetries(() -> { datastore.delete(batch.toArray(new Key[0])); return null; }); } }
@Override public EntityQuery build() { return new EntityQuery(this); } }
var query = new EntityQuery("Customers") .take(20) .orderBy("CompanyName") .noTracking(true);
var query = new EntityQuery() .from("Customers") .where("length(companyName)", "==", 19);
var query = new EntityQuery() .from("Customers") .where("length(CompanyName)", "==", 19);