/** * Query the model records with the {@link QueryOptions}. */ protected ApiResponse<List<T>> queryList(QueryOptions options, Map<String, Object> filters, Consumer<ModelQueryExecutor> executorCallback, Consumer<CriteriaQuery> queryCallback, boolean filterByParams) { ModelQueryExecutor executor = mef.newQueryExecutor(mec); if(null != executorCallback) { executorCallback.accept(executor); } QueryListResult result = executor.queryList(options, filters, queryCallback, filterByParams); if (result.getCount() == -1) { return ApiResponse.of(result.getList()); } else { return ApiResponse.of(result.getList()).setHeader("X-Total-Count", String.valueOf(result.getCount())); } }
@Override public Object apply(ActionParams params) { MApiModel am = am(); ModelExecutorContext context = new SimpleModelExecutorContext(api, dao, am, em, params); ModelQueryExecutor executor = newQueryExecutor(context); QueryOptions options = getWithoutId(params, 0); QueryListResult result = executor.queryList(options); if (null != result.getEntity()) { return ApiResponse.of(result.getEntity()); } if (result.getCount() == -1) { return ApiResponse.of(result.getList()); } else { return ApiResponse.of(result.getList()).setHeader("X-Total-Count", String.valueOf(result.getCount())); } }
@Override public QueryListResult queryList(Object id, QueryOptions options) { RelationExecutionContext context = new DefaultRelationExecutionContext(DefaultRelationQueryExecutor.this.context); ex.preRelateQueryList(context, id, options); QueryListResult result; if (remoteRest) { result = queryListRemoteSource(id, options); }else if (rm.isEmbedded()) { result = queryListEmbedded(id, options); }else if (tem.isRemoteRest()) { result = queryListRemoteTarget(id, options); }else { result = iqe.queryListByRelation(id, options); } ex.postRelateQueryList(context, id, result.getList()); ex.completeRelateQueryList(context, id, result); return result; }