Sha256: c318f432d7f818078798422bda1231bd2fac457bd54f7503c09f979579433675

Contents?: true

Size: 1.19 KB

Versions: 15

Compression:

Stored size: 1.19 KB

Contents

module Blazer
  class Query < Record
    belongs_to :creator, optional: true, class_name: Blazer.user_class.to_s if Blazer.user_class
    has_many :checks, dependent: :destroy
    has_many :dashboard_queries, dependent: :destroy
    has_many :dashboards, through: :dashboard_queries
    has_many :audits

    validates :statement, presence: true

    scope :active, -> { column_names.include?("status") ? where(status: ["active", nil]) : all }
    scope :named, -> { where.not(name: "") }

    def to_param
      [id, name].compact.join("-").gsub("'", "").parameterize
    end

    def friendly_name
      name.to_s.sub(/\A[#\*]/, "").gsub(/\[.+\]/, "").strip
    end

    def editable?(user)
      !persisted? || (name.present? && name.first != "*" && name.first != "#") || user == try(:creator)
    end

    def variables
      # don't require data_source to be loaded
      variables = Statement.new(statement).variables
      variables += ["cohort_period"] if cohort_analysis?
      variables
    end

    def cohort_analysis?
      # don't require data_source to be loaded
      Statement.new(statement).cohort_analysis?
    end

    def statement_object
      Statement.new(statement, data_source)
    end
  end
end

Version data entries

15 entries across 15 versions & 3 rubygems

Version Path
blazer-3.2.0 app/models/blazer/query.rb
blazer-3.1.0 app/models/blazer/query.rb
blazer-3.0.4 app/models/blazer/query.rb
blazer_xlsx-3.0.8 app/models/blazer/query.rb
blazer_xlsx-3.0.7 app/models/blazer/query.rb
blazer_xlsx-3.0.6 app/models/blazer/query.rb
blazer_xlsx-3.0.5 app/models/blazer/query.rb
blazer-3.0.3 app/models/blazer/query.rb
blazer-3.0.2 app/models/blazer/query.rb
finery-3.0.3 app/models/blazer/query.rb
finery-3.0.2 app/models/blazer/query.rb
blazer-3.0.1 app/models/blazer/query.rb
finery-3.0.1 app/models/blazer/query.rb
finery-3.0.0 app/models/blazer/query.rb
blazer-3.0.0 app/models/blazer/query.rb