# File lib/dm-aggregates/aggregate_functions.rb, line 151 def aggregate(*args) query = args.last.kind_of?(Hash) ? args.pop : {} query[:fields] ||= [] query[:fields] |= args query[:fields].map! { |f| normalize_field(f) } query[:order] ||= query[:fields].select { |p| p.kind_of?(Property) } raise ArgumentError, 'query[:fields] must not be empty' if query[:fields].empty? query = scoped_query(query) if query.fields.any? { |p| p.kind_of?(Property) } query.repository.aggregate(query.update(:unique => true)) else query.repository.aggregate(query).first # only return one row end end