QueryBuilder qb = QueryBuilder.getBuilder(QueryType.SELECT); System.out.println(qb .from("sailors") .where( C.and( C.gt("rating", 5), C.lt("rating", 9))) .groupBy("rating") .having( C.gt( new OperationalField(QueryFieldOperation.AVG, "age").toString(), 20) ).getQuery());
public <TT> TT child(Class<TT> childClazz) { QueryBuilder<TT> q = r.query(childClazz).from(this); return q.only(); }
public QueryBuilder<T> whereById(String operator, IdRef<?> id) { return from(id.getParentId()).where(model.getIdField().getName(), operator, id); }
private QueryBuilder<SinkMarker> prepareQuery() { QueryBuilder<SinkMarker> q = r.query(SinkMarker.class).from(sinkId).order("id").limit(BATCH_SIZE); if (cursor != null) { q.cursor(cursor); } return q; }
private List<? extends IdRef<?>> sinkMarkerIds() { QueryBuilder<?> q = r.query(SinkMarker.class).from(sinkId).order("id").limit(BATCH_SIZE); if (cursor != null) { q.cursor(cursor); } List<? extends IdRef<?>> ids = q.ids(); if (ids.size() < BATCH_SIZE) { cursor = null; } else { cursor = q.getCursor(); } return ids; } }
@Override public Object action() { QueryBuilder<?> query = query(); if (id != null) { query.from(id); } boolean returnCursor = false; if (params.containsKey(QUERY_OPTIONS)) { QueryOptions options = QueryOptions.parse(params.get(QUERY_OPTIONS)); query.options(options); returnCursor = options.returnCursor(); } if (hasShieldCondition()) { query.and(shield.getWhere()); } List<?> objects = list(query); if (returnCursor) { Map<String, Object> result = new HashMap<>(); result.put("results", objects); result.put("cursor", query.getCursor()); return result; } return objects; }
@PUT("touched") public List<Grandchild> touchCollection(IdRef<Child> childId) { List<Grandchild> grandchilds = yawp(Grandchild.class).from(childId).list(); for (Grandchild grandchild : grandchilds) { grandchild.setName("touched " + grandchild.getName()); } return grandchilds; }
@PUT("touched") public List<Child> touchCollection(IdRef<Parent> parentId) { List<Child> childs = yawp(Child.class).from(parentId).order("name").list(); for (Child child : childs) { child.setName("touched " + child.getName()); } return childs; }