Sha256: 234fa9222f77ae60701ac54a224f4a3b619a5636628c38b62e0b34d94321b7fe

Contents?: true

Size: 1.3 KB

Versions: 21

Compression:

Stored size: 1.3 KB

Contents

module Godmin
  module Resources
    module ResourceService
      module Scopes
        extend ActiveSupport::Concern

        delegate :scope_map, to: "self.class"

        def apply_scope(scope_param, resources)
          return resources if scope_map.empty?

          self.scope = scope_param

          if scope && scope_map.key?(scope.to_sym)
            send("scope_#{@scope}", resources)
          else
            fail NotImplementedError, "Scope #{@scope} not implemented"
          end
        end

        def scope=(scope)
          @scope = scope.blank? ? default_scope : scope
        end

        def scope
          @scope
        end

        def scoped_by?(name)
          @scope == name.to_s
        end

        def scope_count(scope)
          send("scope_#{scope}", resources_relation).count
        end

        protected

        def default_scope
          scope = scope_map.find -> { scope_map.first } do |_key, value|
            value[:default] == true
          end

          scope ? scope[0].to_s : nil
        end

        module ClassMethods
          def scope_map
            @scope_map ||= {}
          end

          def scope(attr, options = {})
            scope_map[attr] = {
              default: false
            }.merge(options)
          end
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
godmin-2.3.0 lib/godmin/resources/resource_service/scopes.rb
godmin-2.2.2 lib/godmin/resources/resource_service/scopes.rb
godmin-2.2.1 lib/godmin/resources/resource_service/scopes.rb
godmin-2.2.0 lib/godmin/resources/resource_service/scopes.rb
godmin-2.1.0 lib/godmin/resources/resource_service/scopes.rb
godmin-2.0.0 lib/godmin/resources/resource_service/scopes.rb
godmin-1.5.0 lib/godmin/resources/resource_service/scopes.rb
godmin-1.4.0 lib/godmin/resources/resource_service/scopes.rb
godmin-1.3.1 lib/godmin/resources/resource_service/scopes.rb
godmin-1.3.0 lib/godmin/resources/resource_service/scopes.rb
godmin-1.2.0 lib/godmin/resources/resource_service/scopes.rb
godmin-1.1.0 lib/godmin/resources/resource_service/scopes.rb
godmin-1.0.0 lib/godmin/resources/resource_service/scopes.rb
godmin-0.12.4 lib/godmin/resources/resource_service/scopes.rb
godmin-0.12.3 lib/godmin/resources/resource_service/scopes.rb
godmin-0.12.2 lib/godmin/resources/resource_service/scopes.rb
godmin-0.12.1 lib/godmin/resources/resource_service/scopes.rb
godmin-0.12.0 lib/godmin/resources/resource_service/scopes.rb
godmin-0.11.2 lib/godmin/resources/resource_service/scopes.rb
godmin-0.11.1 lib/godmin/resources/resource_service/scopes.rb