lib/fetcha.rb in fetcha-0.2.1 vs lib/fetcha.rb in fetcha-0.2.2
- old
+ new
@@ -16,13 +16,34 @@
results = process_scope(results, query_scope) if query_scope
results = process_filtering(results, filters) if filters
results = process_sorting(results, sorting) if sorting
results = process_pagination!(results, pages) if pages
results = process_search(results, search) if search
- results
+ results.extending(PaginationTotalCount)
end
+ module PaginationTotalCount
+ def reset
+ @total_count = nil
+ super
+ end
+
+ def total_count(column_name = :all, _options = nil)
+ @total_count ||=
+ begin
+ c = except(:offset, :limit, :order)
+ c = c.count(column_name)
+
+ if c.is_a?(Hash) || c.is_a?(ActiveSupport::OrderedHash)
+ c.count
+ else
+ c.respond_to?(:count) ? c.count(column_name) : c
+ end
+ end
+ end
+ end
+
private
def fetchable_opts
@fetchable_opts ||=
{
@@ -61,11 +82,10 @@
fetchable_opts[:pagination][k] = args[k]
end
end
def process_scope(datasource, query_scope)
- return datasource unless fetchable_opts[:scopes].include? query_scope
- datasource.send(query_scope)
+ datasource.send(query_scope) if (fetchable_opts[:scopes].include? query_scope.to_sym)
end
def process_search(datasource, search)
datasource.search_full_text(search)
end