/** * Elastic search query builder service */ angular.module('superdesk.core.elastic').service('es', [function() { var SIZE_DEFAULT = 25; /** * Set from/size for given query and params * * @param {Object} query * @param {Object} params * @returns {Object} */ function paginate(query, params) { var page = params.page || 1; query.size = params.size || SIZE_DEFAULT; query.from = (page - 1) * query.size; return query; } /** * Build query using elastic query dsl * * @param {Object} params * @param {Array} filters * @returns {Object} */ function buildQuery(params, filters) { var query: any = {filtered: {}}; if (filters && filters.length) { query.filtered.filter = {and: filters}; } if (params.q) { query.filtered.query = {query_string: {query: params.q}}; } return paginate({query: query}, params); } return buildQuery; }]);