Sha256: 3a740ff9c4fb6bfe6faf5f8ebf41a41ee5e8c19af90d822e285c4e7160bd42fe

Contents?: true

Size: 919 Bytes

Versions: 1

Compression:

Stored size: 919 Bytes

Contents

module Groupdate
  module QueryMethods
    Groupdate::PERIODS.each do |period|
      define_method :"group_by_#{period}" do |field, time_zone = nil, range = nil, **options|
        warn "[groupdate] positional arguments for time zone and range are deprecated" if time_zone || range

        Groupdate::Magic::Relation.generate_relation(self,
          period: period,
          field: field,
          time_zone: time_zone,
          range: range,
          **options
        )
      end
    end

    def group_by_period(period, field, permit: nil, **options)
      # to_sym is unsafe on user input, so convert to strings
      permitted_periods = ((permit || Groupdate::PERIODS).map(&:to_sym) & Groupdate::PERIODS).map(&:to_s)
      if permitted_periods.include?(period.to_s)
        send("group_by_#{period}", field, **options)
      else
        raise ArgumentError, "Unpermitted period"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
groupdate-4.3.0 lib/groupdate/query_methods.rb