Module: JSONAPI::QueryCounter
- Defined in:
- lib/json_api/support/query_counter.rb
Constant Summary collapse
- SKIP_PATTERN =
/\A(\s*(BEGIN|COMMIT|ROLLBACK|SAVEPOINT|RELEASE\s+SAVEPOINT)\b)/i- SCHEMA_PATTERN =
/\A(\s*(CREATE|ALTER|DROP)\s+(TABLE|INDEX|DATABASE))/i- PRAGMA_PATTERN =
/\APRAGMA\b/i- SQLITE_MASTER_PATTERN =
/sqlite_master|sqlite_temp_master/i
Class Method Summary collapse
Class Method Details
.count ⇒ Object
10 11 12 13 14 15 |
# File 'lib/json_api/support/query_counter.rb', line 10 def self.count(&) queries = [] counter = ->(_name, _start, _finish, _id, payload) { count_sql(queries, payload) } ActiveSupport::Notifications.subscribed(counter, "sql.active_record", &) queries end |
.count_queries ⇒ Object
17 18 19 |
# File 'lib/json_api/support/query_counter.rb', line 17 def self.count_queries(&) count(&).size end |
.count_sql(queries, payload) ⇒ Object
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/json_api/support/query_counter.rb', line 21 def self.count_sql(queries, payload) sql = payload[:sql] return if sql.nil? return if SKIP_PATTERN.match?(sql) return if SCHEMA_PATTERN.match?(sql) return if PRAGMA_PATTERN.match?(sql) return if SQLITE_MASTER_PATTERN.match?(sql) queries << sql end |