diff --git a/app/controllers/discourse_data_explorer/query_controller.rb b/app/controllers/discourse_data_explorer/query_controller.rb index 84c6263..a395dcf 100644 --- a/app/controllers/discourse_data_explorer/query_controller.rb +++ b/app/controllers/discourse_data_explorer/query_controller.rb @@ -194,6 +194,7 @@ module ::DiscourseDataExplorer result, query_params:, download: params[:download], + explain: params[:explain] == "true", ) end format.csv do diff --git a/spec/requests/query_controller_spec.rb b/spec/requests/query_controller_spec.rb index f85cf38..6e7080e 100644 --- a/spec/requests/query_controller_spec.rb +++ b/spec/requests/query_controller_spec.rb @@ -126,9 +126,13 @@ describe DiscourseDataExplorer::QueryController do end describe "#run" do - def run_query(id, params = {}) + def run_query(id, params = {}, explain = false) params = Hash[params.map { |a| [a[0], a[1].to_s] }] - post "/admin/plugins/explorer/queries/#{id}/run.json", params: { params: params.to_json } + post "/admin/plugins/explorer/queries/#{id}/run.json", + params: { + params: params.to_json, + explain: explain, + } end it "can run queries" do @@ -139,6 +143,18 @@ describe DiscourseDataExplorer::QueryController do expect(response_json["errors"]).to eq([]) expect(response_json["columns"]).to eq(["my_value"]) expect(response_json["rows"]).to eq([[23]]) + expect(response_json["explain"]).to be_nil + end + + it "can run and explain queries" do + query = make_query("SELECT 23 as my_value") + run_query query.id, {}, true + expect(response.status).to eq(200) + expect(response_json["success"]).to eq(true) + expect(response_json["errors"]).to eq([]) + expect(response_json["columns"]).to eq(["my_value"]) + expect(response_json["rows"]).to eq([[23]]) + expect(response_json["explain"]).to match("Result ") end it "can process parameters" do