SQL Queries for admins in Discourse
Go to file
Ted Johansson bc02d030b6
DEV: Add configurable rate limit for Data Explorer API query runs (#238)
Data Explorer can run arbitrary SQL queries which can be costly for us if over-used. Because of that we want to add the ability to rate limit the query run endpoint, in particular when requested programmatically using API.

This commit introduces a rate limit to the `QueryController#run` endpoint. It heavily leans on the existing `RateLimiter` implementation, and the ability of `ApplicationController` to turn rate limit exceptions into nicely formatted JSON responses.

The rate limit (per 10 seconds) can be configured through the global setting `max_data_explorer_api_reqs_per_10_seconds`, and defaults to 2.

Handling can be configured through `max_data_explorer_api_req_mode`, and can be set to warn, block, or both warn and block. We will default to warn for now and monitor the logs for a while.
2023-04-03 13:46:35 +08:00
.github/workflows DEV: Update CI workflows (#216) 2023-01-10 18:11:40 +00:00
app DEV: Add configurable rate limit for Data Explorer API query runs (#238) 2023-04-03 13:46:35 +08:00
assets FIX: Reset results on query redirect (#236) 2023-03-28 11:01:47 -05:00
config FEATURE: Allow data explorer query result to be sent as recurring PM (#233) 2023-03-24 16:38:42 +08:00
db/migrate DEV: Update plugin to match latest guidelines (#229) 2023-03-22 23:29:08 +02:00
lib FEATURE: Allow data explorer query result to be sent as recurring PM (#233) 2023-03-24 16:38:42 +08:00
spec DEV: Add configurable rate limit for Data Explorer API query runs (#238) 2023-04-03 13:46:35 +08:00
test/javascripts FIX: Maintain editing state after saving query changes (#223) 2023-02-08 13:40:53 -06:00
.discourse-compatibility DEV: Change bookmarkable registration to use new plugin API (#230) 2023-03-08 10:39:20 +10:00
.eslintrc DEV: apply coding standards (#66) 2020-09-04 13:23:11 +02:00
.gitignore DEV: Update linting setup and fix issues (#179) 2022-06-17 15:01:34 +02:00
.prettierrc DEV: Minor clean-up (#119) 2021-07-02 10:31:16 +02:00
.rubocop.yml DEV: Introduce syntax_tree for ruby formatting (#208) 2022-12-29 13:31:29 +01:00
.streerc DEV: Introduce syntax_tree for ruby formatting (#208) 2022-12-29 13:31:29 +01:00
.template-lintrc.js DEV: apply coding standards (#66) 2020-09-04 13:23:11 +02:00
Gemfile DEV: Introduce syntax_tree for ruby formatting (#208) 2022-12-29 13:31:29 +01:00
Gemfile.lock DEV: Introduce syntax_tree for ruby formatting (#208) 2022-12-29 13:31:29 +01:00
LICENSE Initial commit as a clone of discourse-tagging 2015-06-25 09:25:15 -07:00
README.md DEV: Update README.md (#164) 2022-02-21 20:59:32 +01:00
about.json FEATURE: Allow data explorer query result to be sent as recurring PM (#233) 2023-03-24 16:38:42 +08:00
package.json DEV: Update linting setup and fix issues (#179) 2022-06-17 15:01:34 +02:00
plugin.rb DEV: Add configurable rate limit for Data Explorer API query runs (#238) 2023-04-03 13:46:35 +08:00
translator.yml DEV: Upgrade `admin-plugins-explorer` to Octane (#209) 2023-01-05 09:27:10 -06:00
yarn.lock DEV: Update eslint-config-discourse, use prettier for hbs (#212) 2023-01-04 13:36:14 +01:00

README.md

Data Explorer Plugin

This plugin allows admins to run SQL queries against the live Discourse database, including parameterized queries and formatting for several common column types.

For more information, please see: https://meta.discourse.org/t/data-explorer-plugin/32566