Sha256: 6fe5575d51b52a3dd2e41770f6860893d2d3f32e86d68a0b29e0d29fde4e8277

Contents?: true

Size: 911 Bytes

Versions: 15

Compression:

Stored size: 911 Bytes

Contents

# -*- coding: utf-8 -*-
require 'tengine/core/driver'

class Tengine::Core::Driver::Finder

  ATTRIBUTE_NAMES = [
    :name,
    :version,
    :enabled,
    :enabled_on_activation
  ].freeze

  ATTRIBUTE_NAMES.each{|name| attr_accessor(name)}

  def initialize(attrs = {})
    attrs ||= {}
    attrs.each do |attr, v| 
      send("#{attr}=", v) unless v.blank?
    end
  end

  def attributes
    ATTRIBUTE_NAMES.inject({}){|d, name| d[name] = send(name); d}
  end

  def paginate(page)
    scope(Tengine::Core::Driver).page(page)
  end

  def scope(criteria)
    result = criteria
    result = result.where(name: name) if name
    result = result.where(version: version) if version
    result = result.where(enabled: enabled) if enabled
    result = result.where(enabled_on_activation: enabled_on_activation) if enabled_on_activation
    # ソート
    result = result.asc(:_id, :name)
    result
  end

end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
tengine_core-1.2.2 lib/tengine/core/driver/finder.rb
tengine_core-1.2.1 lib/tengine/core/driver/finder.rb
tengine_core-1.2.0 lib/tengine/core/driver/finder.rb
tengine_core-1.1.0 lib/tengine/core/driver/finder.rb
tengine_core-0.5.39 lib/tengine/core/driver/finder.rb
tengine_core-0.5.38 lib/tengine/core/driver/finder.rb
tengine_core-0.5.37 lib/tengine/core/driver/finder.rb
tengine_core-0.5.36 lib/tengine/core/driver/finder.rb
tengine_core-0.5.35 lib/tengine/core/driver/finder.rb
tengine_core-0.5.34 lib/tengine/core/driver/finder.rb
tengine_core-0.5.33 lib/tengine/core/driver/finder.rb
tengine_core-0.5.32 lib/tengine/core/driver/finder.rb
tengine_core-0.5.31 lib/tengine/core/driver/finder.rb
tengine_core-0.5.30 lib/tengine/core/driver/finder.rb
tengine_core-0.5.28 lib/tengine/core/driver/finder.rb