Sha256: 5f5b7a7e0aa61db43e31be648f7954567e18e7d4ed4aa6f646350094dba475a4

Contents?: true

Size: 1.59 KB

Versions: 3

Compression:

Stored size: 1.59 KB

Contents

module Groupdate
  module Adapters
    class SQLiteAdapter < BaseAdapter
      def group_clause
        raise Groupdate::Error, "Time zones not supported for SQLite" unless @time_zone.utc_offset.zero?
        raise Groupdate::Error, "day_start not supported for SQLite" unless day_start.zero?

        query =
          if period == :week
            ["strftime('%Y-%m-%d 00:00:00 UTC', #{column}, '-6 days', ?)", "weekday #{(week_start + 1) % 7}"]
          elsif period == :custom
            ["datetime((strftime('%s', #{column}) / ?) * ?, 'unixepoch')", n_seconds, n_seconds]
          else
            format =
              case period
              when :minute_of_hour
                "%M"
              when :hour_of_day
                "%H"
              when :day_of_week
                "%w"
              when :day_of_month
                "%d"
              when :day_of_year
                "%j"
              when :month_of_year
                "%m"
              when :second
                "%Y-%m-%d %H:%M:%S UTC"
              when :minute
                "%Y-%m-%d %H:%M:00 UTC"
              when :hour
                "%Y-%m-%d %H:00:00 UTC"
              when :day
                "%Y-%m-%d 00:00:00 UTC"
              when :month
                "%Y-%m-01 00:00:00 UTC"
              when :quarter
                raise Groupdate::Error, "Quarter not supported for SQLite"
              else # year
                "%Y-01-01 00:00:00 UTC"
              end

            ["strftime(?, #{column})", format]
          end

        @relation.send(:sanitize_sql_array, query)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
groupdate-5.2.4 lib/groupdate/adapters/sqlite_adapter.rb
groupdate-5.2.3 lib/groupdate/adapters/sqlite_adapter.rb
groupdate-5.2.2 lib/groupdate/adapters/sqlite_adapter.rb