Sha256: b415ab305b5c9707b18a87c68c2a57f84b4b086af9bc4a6fe0248fbe4386adb3

Contents?: true

Size: 1.45 KB

Versions: 126

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

class ReeValidator::ValidatePaging
  include Ree::FnDSL

  fn :validate_paging do
    link :t, from: :ree_i18n
  end

  PagingErr = Class.new(StandardError)

  contract(
    Kwargs[
      page: Integer,
      per_page: Integer,
      min_per_page: Integer,
      max_per_page: Integer,
      error: Nilor[StandardError],
    ],
    Ksplat[
      max_result_window?: Integer
    ] => Bool
  ).throws(PagingErr)
  def call(page:, per_page:, min_per_page:, max_per_page:, error: nil, **opts)
    if page < 1
      error ||= PagingErr.new(
        t('validator.paging.min_page', default_by_locale: :en)
      )

      raise error
    end

    if per_page < min_per_page
      error ||= PagingErr.new(
        t(
          'validator.paging.min_per_page',
          {min_per_page: min_per_page},
          default_by_locale: :en
        )
      )

      raise error
    end

    if per_page > max_per_page
      error ||= PagingErr.new(
        t(
          'validator.paging.max_per_page',
          {max_per_page: max_per_page},
          default_by_locale: :en
        )
      )

      raise error
    end

    max_result_window = opts[:max_result_window]

    if max_result_window && page * per_page > max_result_window
      error ||= PagingErr.new(
        t(
          'validator.paging.max_result_window',
          {max_result_window: max_result_window},
          default_by_locale: :en
        )
      )

      raise error
    end

    true
  end
end

Version data entries

126 entries across 126 versions & 1 rubygems

Version Path
ree_lib-1.1.1 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.1.0 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.124 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.123 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.122 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.121 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.120 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.119 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.118 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.117 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.116 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.115 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.114 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.113 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.112 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.111 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.110 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.109 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.108 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb
ree_lib-1.0.107 lib/ree_lib/packages/ree_validator/package/ree_validator/functions/validate_paging.rb