Previously this was adding an extra AJAX request to check if the group had any queries available. Now a boolean is included in the group serializer, so there is no need for the extra request. Removing this ajax request will also stop other plugin JS integration tests from failing when the data-explorer plugin is installed. This commit also fixes the HTML markup of the tab, so that it doesn't have a <ul> nested inside the existing <ul>. Also adds an icon for good measure.
47 lines
1.2 KiB
Ruby
47 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module DataExplorer
|
|
class Query < ActiveRecord::Base
|
|
self.table_name = 'data_explorer_queries'
|
|
has_many :query_groups
|
|
has_many :groups, through: :query_groups
|
|
belongs_to :user
|
|
|
|
scope :for_group, ->(group) do
|
|
where(hidden: false)
|
|
.joins("INNER JOIN data_explorer_query_groups
|
|
ON data_explorer_query_groups.query_id = data_explorer_queries.id
|
|
AND data_explorer_query_groups.group_id = #{group.id}")
|
|
end
|
|
|
|
def params
|
|
@params ||= DataExplorer::Parameter.create_from_sql(sql)
|
|
end
|
|
|
|
def cast_params(input_params)
|
|
result = {}.with_indifferent_access
|
|
self.params.each do |pobj|
|
|
result[pobj.identifier] = pobj.cast_to_ruby input_params[pobj.identifier]
|
|
end
|
|
result
|
|
end
|
|
|
|
def slug
|
|
Slug.for(name).presence || "query-#{id}"
|
|
end
|
|
|
|
def self.find(id)
|
|
if id.to_i < 0
|
|
default_query = Queries.default[id.to_s]
|
|
return raise ActiveRecord::RecordNotFound unless default_query
|
|
query = Query.find_by(id: id) || Query.new
|
|
query.attributes = default_query
|
|
query.user_id = Discourse::SYSTEM_USER_ID.to_s
|
|
query
|
|
else
|
|
super
|
|
end
|
|
end
|
|
end
|
|
end
|