Sha256: c4b9db875fc86a121a72979b1ae46ed63c3e513d6c5dc252b1acdde1b3f43d80

Contents?: true

Size: 1.58 KB

Versions: 27

Compression:

Stored size: 1.58 KB

Contents

class Marty::VwPromise < Marty::Base

  has_many :children,
           foreign_key: 'parent_id',
           class_name: "Marty::VwPromise",
           dependent: :destroy

  belongs_to :parent, class_name: "Marty::VwPromise"
  belongs_to :user, class_name: "Marty::User"

  self.table_name = 'marty_vw_promises'
  self.primary_key = 'id'

  class VirtualRoot
    def self.primary_key
      'id'
    end

    def id
      'root'
    end

    def user_id
      0
    end
    alias_method :job_id, :user_id

    def result
      nil
    end
    [:start_dt, :end_dt].each { |m| alias_method m, :result }

    def status
      true
    end
  end

  def self.root
    VirtualRoot.new
  end

  def self.children_for_id(id, search_order)
    q = id == 'root' ? where(parent_id: nil) : find(id).children
    q.live_search(search_order).order(id: :desc).includes(:children, :user)
  end

  def leaf
    children.empty?
  end

  def to_s
    inspect
  end

  # Support UI live search -- FIXME: hacky to have UI scoping here
  scope :live_search, lambda { |search_text|
    return if !search_text || search_text.strip.length < 1

    # Searches user login/firstname/lastname
    query = [
             "marty_users.login ILIKE ?",
             "marty_users.firstname ILIKE ?",
             "marty_users.lastname ILIKE ?",
             "marty_roles.name ILIKE ?",
            ].join(' OR ')

    st = "%#{search_text}%"
    # Convert "Role Name" or "Role name" to "role_name" (underscore is key)
    st2 = "%#{search_text.titleize.gsub(/\s/, '').underscore}%"
    joins({:user => :roles}).where(query, st, st, st, st2).distinct
  }
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
marty-2.5.2 app/models/marty/vw_promise.rb
marty-2.5.1 app/models/marty/vw_promise.rb
marty-2.5.0 app/models/marty/vw_promise.rb
marty-2.4.9 app/models/marty/vw_promise.rb
marty-2.4.8 app/models/marty/vw_promise.rb
marty-2.4.7 app/models/marty/vw_promise.rb
marty-2.4.6 app/models/marty/vw_promise.rb
marty-2.4.5 app/models/marty/vw_promise.rb
marty-2.4.4 app/models/marty/vw_promise.rb
marty-2.4.3 app/models/marty/vw_promise.rb
marty-2.4.2 app/models/marty/vw_promise.rb
marty-2.4.1 app/models/marty/vw_promise.rb
marty-2.4.0 app/models/marty/vw_promise.rb
marty-2.3.15 app/models/marty/vw_promise.rb
marty-2.3.14 app/models/marty/vw_promise.rb
marty-2.3.13 app/models/marty/vw_promise.rb
marty-2.3.12 app/models/marty/vw_promise.rb
marty-2.3.11 app/models/marty/vw_promise.rb
marty-2.3.10 app/models/marty/vw_promise.rb
marty-2.3.9 app/models/marty/vw_promise.rb