query_console 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,41 @@
1
+ module QueryConsole
2
+ class Configuration
3
+ attr_accessor :enabled_environments,
4
+ :max_rows,
5
+ :timeout_ms,
6
+ :authorize,
7
+ :current_actor,
8
+ :forbidden_keywords,
9
+ :allowed_starts_with
10
+
11
+ def initialize
12
+ @enabled_environments = ["development"]
13
+ @max_rows = 500
14
+ @timeout_ms = 3000
15
+ @authorize = nil # nil means deny by default
16
+ @current_actor = -> (_controller) { "unknown" }
17
+ @forbidden_keywords = %w[
18
+ update delete insert drop alter create grant revoke truncate
19
+ execute exec sp_executesql xp_ sp_ merge replace into
20
+ shutdown backup restore transaction commit rollback
21
+ ]
22
+ @allowed_starts_with = %w[select with]
23
+ end
24
+ end
25
+
26
+ class << self
27
+ attr_writer :configuration
28
+
29
+ def configuration
30
+ @configuration ||= Configuration.new
31
+ end
32
+
33
+ def configure
34
+ yield(configuration)
35
+ end
36
+
37
+ def reset_configuration!
38
+ @configuration = Configuration.new
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,29 @@
1
+ module QueryConsole
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace QueryConsole
4
+
5
+ config.generators do |g|
6
+ g.test_framework :rspec
7
+ end
8
+
9
+ # Ensure engine assets and views are available
10
+ config.eager_load_paths << File.expand_path("../app/services", __dir__)
11
+
12
+ # Load Hotwire (Turbo & Stimulus)
13
+ initializer "query_console.importmap", before: "importmap" do |app|
14
+ if app.config.respond_to?(:importmap)
15
+ app.config.importmap.paths << root.join("config/importmap.rb")
16
+ end
17
+ end
18
+
19
+ # Ensure Turbo and Stimulus are available
20
+ initializer "query_console.hotwire" do |app|
21
+ unless defined?(Turbo)
22
+ require "turbo-rails"
23
+ end
24
+ unless defined?(Stimulus)
25
+ require "stimulus-rails"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module QueryConsole
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,7 @@
1
+ require "query_console/version"
2
+ require "query_console/configuration"
3
+ require "query_console/engine"
4
+
5
+ module QueryConsole
6
+ # This module provides a mountable Rails engine for running read-only SQL queries
7
+ end
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: query_console
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Johnson Gnanasekar
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '7.0'
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 7.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '7.0'
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 7.0.0
32
+ - !ruby/object:Gem::Dependency
33
+ name: turbo-rails
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: '2.0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: '2.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: stimulus-rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.3'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '1.3'
60
+ - !ruby/object:Gem::Dependency
61
+ name: importmap-rails
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '2.0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '2.0'
74
+ - !ruby/object:Gem::Dependency
75
+ name: rspec-rails
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '5.0'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '5.0'
88
+ - !ruby/object:Gem::Dependency
89
+ name: sqlite3
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.4'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.4'
102
+ description: A Rails engine that provides a web-based SQL query console with read-only
103
+ enforcement, authorization hooks, and audit logging.
104
+ email:
105
+ - johnson@example.com
106
+ executables: []
107
+ extensions: []
108
+ extra_rdoc_files: []
109
+ files:
110
+ - MIT-LICENSE
111
+ - README.md
112
+ - Rakefile
113
+ - app/controllers/query_console/application_controller.rb
114
+ - app/controllers/query_console/queries_controller.rb
115
+ - app/javascript/query_console/application.js
116
+ - app/javascript/query_console/controllers/collapsible_controller.js
117
+ - app/javascript/query_console/controllers/editor_controller.js
118
+ - app/javascript/query_console/controllers/history_controller.js
119
+ - app/services/query_console/audit_logger.rb
120
+ - app/services/query_console/runner.rb
121
+ - app/services/query_console/sql_limiter.rb
122
+ - app/services/query_console/sql_validator.rb
123
+ - app/views/query_console/queries/_results.html.erb
124
+ - app/views/query_console/queries/new.html.erb
125
+ - config/importmap.rb
126
+ - config/routes.rb
127
+ - lib/generators/query_console/install/README
128
+ - lib/generators/query_console/install/install_generator.rb
129
+ - lib/generators/query_console/install/templates/query_console.rb
130
+ - lib/query_console.rb
131
+ - lib/query_console/configuration.rb
132
+ - lib/query_console/engine.rb
133
+ - lib/query_console/version.rb
134
+ homepage: https://github.com/JohnsonGnanasekar/query_console
135
+ licenses:
136
+ - MIT
137
+ metadata:
138
+ homepage_uri: https://github.com/JohnsonGnanasekar/query_console
139
+ changelog_uri: https://github.com/JohnsonGnanasekar/query_console/blob/main/CHANGELOG.md
140
+ bug_tracker_uri: https://github.com/JohnsonGnanasekar/query_console/issues
141
+ documentation_uri: https://github.com/JohnsonGnanasekar/query_console/blob/main/README.md
142
+ rdoc_options: []
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 3.1.0
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ requirements: []
156
+ rubygems_version: 3.6.7
157
+ specification_version: 4
158
+ summary: Mountable Rails engine for secure read-only SQL queries
159
+ test_files: []