nquery 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.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +52 -0
  4. data/Rakefile +9 -0
  5. data/app/assets/builds/nquery/application.css +339 -0
  6. data/app/assets/builds/nquery/application.js +989 -0
  7. data/app/assets/config/nquery_manifest.js +2 -0
  8. data/app/components/nquery/_card_component.html.erb +6 -0
  9. data/app/components/nquery/_card_table_component.html.erb +14 -0
  10. data/app/components/nquery/_flash_card_component.html.erb +32 -0
  11. data/app/components/nquery/_flash_cards_component.html.erb +3 -0
  12. data/app/components/nquery/_infinite_scroll_component.html.erb +11 -0
  13. data/app/components/nquery/card_component.rb +18 -0
  14. data/app/components/nquery/card_table_component.rb +19 -0
  15. data/app/components/nquery/component.rb +26 -0
  16. data/app/components/nquery/flash_card_component.rb +51 -0
  17. data/app/components/nquery/flash_cards_component.rb +20 -0
  18. data/app/components/nquery/infinite_scroll_component.rb +19 -0
  19. data/app/controllers/concerns/nquery/breadcrumbs.rb +238 -0
  20. data/app/controllers/concerns/nquery/browsable.rb +56 -0
  21. data/app/controllers/concerns/nquery/chart_actions.rb +104 -0
  22. data/app/controllers/concerns/nquery/chart_results.rb +30 -0
  23. data/app/controllers/nquery/admin/base_controller.rb +9 -0
  24. data/app/controllers/nquery/admin/data_sources_controller.rb +47 -0
  25. data/app/controllers/nquery/admin/groups_controller.rb +63 -0
  26. data/app/controllers/nquery/admin/logs_controller.rb +28 -0
  27. data/app/controllers/nquery/admin/permissions_controller.rb +53 -0
  28. data/app/controllers/nquery/admin/users_controller.rb +80 -0
  29. data/app/controllers/nquery/application_controller.rb +70 -0
  30. data/app/controllers/nquery/charts_controller.rb +51 -0
  31. data/app/controllers/nquery/collection/dashboards_controller.rb +38 -0
  32. data/app/controllers/nquery/collections_controller.rb +117 -0
  33. data/app/controllers/nquery/dashboard/charts_controller.rb +62 -0
  34. data/app/controllers/nquery/dashboards_controller.rb +90 -0
  35. data/app/controllers/nquery/embed/charts_controller.rb +24 -0
  36. data/app/controllers/nquery/embed/dashboards_controller.rb +17 -0
  37. data/app/controllers/nquery/home_controller.rb +16 -0
  38. data/app/controllers/nquery/imports_controller.rb +41 -0
  39. data/app/controllers/nquery/queries_controller.rb +105 -0
  40. data/app/controllers/nquery/registrations_controller.rb +31 -0
  41. data/app/controllers/nquery/sessions_controller.rb +28 -0
  42. data/app/helpers/nquery/charts_helper.rb +33 -0
  43. data/app/helpers/nquery/collections_helper.rb +13 -0
  44. data/app/helpers/nquery/components_helper.rb +29 -0
  45. data/app/helpers/nquery/home_helper.rb +23 -0
  46. data/app/helpers/nquery/icon_helper.rb +9 -0
  47. data/app/helpers/nquery/navigation_helper.rb +10 -0
  48. data/app/javascript/nquery/controllers/chart_preview_controller.js +125 -0
  49. data/app/javascript/nquery/controllers/csv_mapper_controller.js +23 -0
  50. data/app/javascript/nquery/controllers/dashboard_grid_controller.js +25 -0
  51. data/app/javascript/nquery/controllers/query_editor_controller.js +41 -0
  52. data/app/models/nquery/application_permission.rb +12 -0
  53. data/app/models/nquery/application_record.rb +7 -0
  54. data/app/models/nquery/audit.rb +38 -0
  55. data/app/models/nquery/chart.rb +37 -0
  56. data/app/models/nquery/collection.rb +35 -0
  57. data/app/models/nquery/collection_permission.rb +12 -0
  58. data/app/models/nquery/csv_upload.rb +11 -0
  59. data/app/models/nquery/dashboard.rb +27 -0
  60. data/app/models/nquery/dashboard_card.rb +8 -0
  61. data/app/models/nquery/data_permission.rb +13 -0
  62. data/app/models/nquery/data_source.rb +27 -0
  63. data/app/models/nquery/embed_token.rb +21 -0
  64. data/app/models/nquery/group.rb +27 -0
  65. data/app/models/nquery/group_membership.rb +10 -0
  66. data/app/models/nquery/query.rb +19 -0
  67. data/app/models/nquery/user.rb +58 -0
  68. data/app/views/layouts/nquery/application.html.erb +32 -0
  69. data/app/views/layouts/nquery/auth.html.erb +16 -0
  70. data/app/views/layouts/nquery/embed.html.erb +12 -0
  71. data/app/views/nquery/admin/data_sources/edit.html.erb +8 -0
  72. data/app/views/nquery/admin/data_sources/index.html.erb +21 -0
  73. data/app/views/nquery/admin/data_sources/new.html.erb +7 -0
  74. data/app/views/nquery/admin/groups/edit.html.erb +6 -0
  75. data/app/views/nquery/admin/groups/index.html.erb +21 -0
  76. data/app/views/nquery/admin/groups/new.html.erb +6 -0
  77. data/app/views/nquery/admin/groups/show.html.erb +24 -0
  78. data/app/views/nquery/admin/logs/index.html.erb +74 -0
  79. data/app/views/nquery/admin/permissions/_collection.html.erb +25 -0
  80. data/app/views/nquery/admin/permissions/_data_source.html.erb +27 -0
  81. data/app/views/nquery/admin/permissions/_group.html.erb +42 -0
  82. data/app/views/nquery/admin/permissions/by_collection.html.erb +10 -0
  83. data/app/views/nquery/admin/permissions/by_data_source.html.erb +7 -0
  84. data/app/views/nquery/admin/permissions/by_group.html.erb +12 -0
  85. data/app/views/nquery/admin/users/edit.html.erb +17 -0
  86. data/app/views/nquery/admin/users/index.html.erb +34 -0
  87. data/app/views/nquery/admin/users/new.html.erb +14 -0
  88. data/app/views/nquery/admin/users/show.html.erb +6 -0
  89. data/app/views/nquery/charts/_builder_form.html.erb +185 -0
  90. data/app/views/nquery/charts/_new_header.html.erb +31 -0
  91. data/app/views/nquery/charts/_schema_tree.html.erb +25 -0
  92. data/app/views/nquery/charts/edit.html.erb +6 -0
  93. data/app/views/nquery/charts/embed.html.erb +15 -0
  94. data/app/views/nquery/charts/new.html.erb +5 -0
  95. data/app/views/nquery/charts/show.html.erb +15 -0
  96. data/app/views/nquery/charts/update.turbo_stream.erb +1 -0
  97. data/app/views/nquery/collection/dashboards/new.html.erb +13 -0
  98. data/app/views/nquery/collections/_dashboard_card.html.erb +57 -0
  99. data/app/views/nquery/collections/edit.html.erb +15 -0
  100. data/app/views/nquery/collections/index.html.erb +41 -0
  101. data/app/views/nquery/collections/new.html.erb +15 -0
  102. data/app/views/nquery/collections/show.html.erb +100 -0
  103. data/app/views/nquery/dashboard/charts/new.html.erb +6 -0
  104. data/app/views/nquery/dashboards/_chart_card.html.erb +16 -0
  105. data/app/views/nquery/dashboards/edit.html.erb +34 -0
  106. data/app/views/nquery/dashboards/index.html.erb +35 -0
  107. data/app/views/nquery/dashboards/show.html.erb +46 -0
  108. data/app/views/nquery/embed/charts/show.html.erb +9 -0
  109. data/app/views/nquery/embed/dashboards/show.html.erb +7 -0
  110. data/app/views/nquery/home/index.html.erb +143 -0
  111. data/app/views/nquery/imports/new.html.erb +20 -0
  112. data/app/views/nquery/queries/edit.html.erb +40 -0
  113. data/app/views/nquery/queries/new.html.erb +37 -0
  114. data/app/views/nquery/registrations/new.html.erb +34 -0
  115. data/app/views/nquery/sessions/new.html.erb +29 -0
  116. data/app/views/nquery/shared/_auth_shell.html.erb +22 -0
  117. data/app/views/nquery/shared/_breadcrumbs.html.erb +15 -0
  118. data/app/views/nquery/shared/_chart_actions_menu.html.erb +27 -0
  119. data/app/views/nquery/shared/_chart_row_actions.html.erb +16 -0
  120. data/app/views/nquery/shared/_flash.html.erb +1 -0
  121. data/app/views/nquery/shared/_icon.html.erb +50 -0
  122. data/app/views/nquery/shared/_sidebar.html.erb +16 -0
  123. data/app/views/nquery/shared/_topbar.html.erb +12 -0
  124. data/config/importmap.rb +9 -0
  125. data/config/routes.rb +78 -0
  126. data/db/migrate/20260721000001_create_nquery_tables.rb +146 -0
  127. data/db/migrate/20260721180000_add_archived_at_to_nquery_dashboards.rb +8 -0
  128. data/db/migrate/20260721190000_add_archived_at_to_nquery_charts.rb +8 -0
  129. data/db/migrate/20260721200000_add_archived_at_to_nquery_collections.rb +8 -0
  130. data/lib/generators/nquery/install_generator.rb +38 -0
  131. data/lib/nquery/authorizes_collection.rb +50 -0
  132. data/lib/nquery/configuration.rb +44 -0
  133. data/lib/nquery/csv_importer.rb +68 -0
  134. data/lib/nquery/data_sources/adapter.rb +34 -0
  135. data/lib/nquery/data_sources/mysql_adapter.rb +24 -0
  136. data/lib/nquery/data_sources/postgresql_adapter.rb +46 -0
  137. data/lib/nquery/data_sources/rails_adapter.rb +54 -0
  138. data/lib/nquery/data_sources/sqlite_adapter.rb +8 -0
  139. data/lib/nquery/embed_token_service.rb +83 -0
  140. data/lib/nquery/engine.rb +55 -0
  141. data/lib/nquery/permissions/resolver.rb +83 -0
  142. data/lib/nquery/query_runner.rb +69 -0
  143. data/lib/nquery/sample_data/ecommerce.rb +157 -0
  144. data/lib/nquery/schema_explorer.rb +28 -0
  145. data/lib/nquery/seeder.rb +131 -0
  146. data/lib/nquery/version.rb +5 -0
  147. data/lib/nquery.rb +36 -0
  148. data/lib/tasks/nquery.rake +9 -0
  149. data/nquery.gemspec +40 -0
  150. metadata +395 -0
data/lib/nquery.rb ADDED
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "turbo-rails"
4
+
5
+ require "nquery/version"
6
+ require "nquery/configuration"
7
+ require "nquery/permissions/resolver"
8
+ require "nquery/authorizes_collection"
9
+ require "nquery/data_sources/adapter"
10
+ require "nquery/data_sources/rails_adapter"
11
+ require "nquery/data_sources/postgresql_adapter"
12
+ require "nquery/data_sources/mysql_adapter"
13
+ require "nquery/data_sources/sqlite_adapter"
14
+ require "nquery/query_runner"
15
+ require "nquery/schema_explorer"
16
+ require "nquery/embed_token_service"
17
+ require "nquery/csv_importer"
18
+ require "nquery/sample_data/ecommerce"
19
+ require "nquery/seeder"
20
+ require "nquery/engine"
21
+
22
+ module Nquery
23
+ class << self
24
+ def configuration
25
+ @configuration ||= Configuration.new
26
+ end
27
+
28
+ def configure
29
+ yield(configuration)
30
+ end
31
+
32
+ def reset_configuration!
33
+ @configuration = Configuration.new
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :nquery do
4
+ desc "Seed demo data for nquery"
5
+ task seed: :environment do
6
+ Nquery::Seeder.run!
7
+ puts "nquery: seed complete"
8
+ end
9
+ end
data/nquery.gemspec ADDED
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/nquery/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "nquery"
7
+ spec.version = Nquery::VERSION
8
+ spec.authors = ["Nquery Contributors"]
9
+ spec.email = ["hello@nquery.dev"]
10
+ spec.summary = "SQL charts, dashboards, and data visualization for Rails"
11
+ spec.description = "Mountable Rails engine for SQL charts, dashboards, and analytics."
12
+ spec.homepage = "https://github.com/nquery/nquery"
13
+ spec.license = "MIT"
14
+ spec.required_ruby_version = ">= 3.2.0"
15
+
16
+ spec.metadata["homepage_uri"] = spec.homepage
17
+ spec.metadata["source_code_uri"] = spec.homepage
18
+
19
+ spec.files = Dir.chdir(__dir__) do
20
+ Dir["{app,config,db,lib}/**/*", "README.md", "LICENSE", "Rakefile", "nquery.gemspec"]
21
+ .reject { |f| f.include?("/templates/") && f.end_with?(".tt") }
22
+ .select { |f| File.file?(f) }
23
+ end
24
+
25
+ spec.add_dependency "rails", ">= 7.1", "< 9"
26
+ spec.add_dependency "bcrypt", "~> 3.1"
27
+ spec.add_dependency "csv"
28
+ spec.add_dependency "importmap-rails"
29
+ spec.add_dependency "turbo-rails"
30
+ spec.add_dependency "stimulus-rails"
31
+ spec.add_dependency "propshaft"
32
+
33
+ spec.add_development_dependency "rspec-rails", "~> 7.0"
34
+ spec.add_development_dependency "capybara", "~> 3.40"
35
+ spec.add_development_dependency "selenium-webdriver", "~> 4.0"
36
+ spec.add_development_dependency "sqlite3", "~> 2.0"
37
+ spec.add_development_dependency "pg", "~> 1.5"
38
+ spec.add_development_dependency "puma", "~> 6.0"
39
+ spec.add_development_dependency "simplecov", "~> 0.22"
40
+ end
metadata ADDED
@@ -0,0 +1,395 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nquery
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nquery Contributors
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-07-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '7.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '9'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '7.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '9'
33
+ - !ruby/object:Gem::Dependency
34
+ name: bcrypt
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: csv
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: importmap-rails
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: turbo-rails
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: stimulus-rails
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: propshaft
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rspec-rails
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '7.0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '7.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: capybara
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '3.40'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '3.40'
145
+ - !ruby/object:Gem::Dependency
146
+ name: selenium-webdriver
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '4.0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '4.0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: sqlite3
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '2.0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '2.0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: pg
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.5'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.5'
187
+ - !ruby/object:Gem::Dependency
188
+ name: puma
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '6.0'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '6.0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: simplecov
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '0.22'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '0.22'
215
+ description: Mountable Rails engine for SQL charts, dashboards, and analytics.
216
+ email:
217
+ - hello@nquery.dev
218
+ executables: []
219
+ extensions: []
220
+ extra_rdoc_files: []
221
+ files:
222
+ - LICENSE
223
+ - README.md
224
+ - Rakefile
225
+ - app/assets/builds/nquery/application.css
226
+ - app/assets/builds/nquery/application.js
227
+ - app/assets/config/nquery_manifest.js
228
+ - app/components/nquery/_card_component.html.erb
229
+ - app/components/nquery/_card_table_component.html.erb
230
+ - app/components/nquery/_flash_card_component.html.erb
231
+ - app/components/nquery/_flash_cards_component.html.erb
232
+ - app/components/nquery/_infinite_scroll_component.html.erb
233
+ - app/components/nquery/card_component.rb
234
+ - app/components/nquery/card_table_component.rb
235
+ - app/components/nquery/component.rb
236
+ - app/components/nquery/flash_card_component.rb
237
+ - app/components/nquery/flash_cards_component.rb
238
+ - app/components/nquery/infinite_scroll_component.rb
239
+ - app/controllers/concerns/nquery/breadcrumbs.rb
240
+ - app/controllers/concerns/nquery/browsable.rb
241
+ - app/controllers/concerns/nquery/chart_actions.rb
242
+ - app/controllers/concerns/nquery/chart_results.rb
243
+ - app/controllers/nquery/admin/base_controller.rb
244
+ - app/controllers/nquery/admin/data_sources_controller.rb
245
+ - app/controllers/nquery/admin/groups_controller.rb
246
+ - app/controllers/nquery/admin/logs_controller.rb
247
+ - app/controllers/nquery/admin/permissions_controller.rb
248
+ - app/controllers/nquery/admin/users_controller.rb
249
+ - app/controllers/nquery/application_controller.rb
250
+ - app/controllers/nquery/charts_controller.rb
251
+ - app/controllers/nquery/collection/dashboards_controller.rb
252
+ - app/controllers/nquery/collections_controller.rb
253
+ - app/controllers/nquery/dashboard/charts_controller.rb
254
+ - app/controllers/nquery/dashboards_controller.rb
255
+ - app/controllers/nquery/embed/charts_controller.rb
256
+ - app/controllers/nquery/embed/dashboards_controller.rb
257
+ - app/controllers/nquery/home_controller.rb
258
+ - app/controllers/nquery/imports_controller.rb
259
+ - app/controllers/nquery/queries_controller.rb
260
+ - app/controllers/nquery/registrations_controller.rb
261
+ - app/controllers/nquery/sessions_controller.rb
262
+ - app/helpers/nquery/charts_helper.rb
263
+ - app/helpers/nquery/collections_helper.rb
264
+ - app/helpers/nquery/components_helper.rb
265
+ - app/helpers/nquery/home_helper.rb
266
+ - app/helpers/nquery/icon_helper.rb
267
+ - app/helpers/nquery/navigation_helper.rb
268
+ - app/javascript/nquery/controllers/chart_preview_controller.js
269
+ - app/javascript/nquery/controllers/csv_mapper_controller.js
270
+ - app/javascript/nquery/controllers/dashboard_grid_controller.js
271
+ - app/javascript/nquery/controllers/query_editor_controller.js
272
+ - app/models/nquery/application_permission.rb
273
+ - app/models/nquery/application_record.rb
274
+ - app/models/nquery/audit.rb
275
+ - app/models/nquery/chart.rb
276
+ - app/models/nquery/collection.rb
277
+ - app/models/nquery/collection_permission.rb
278
+ - app/models/nquery/csv_upload.rb
279
+ - app/models/nquery/dashboard.rb
280
+ - app/models/nquery/dashboard_card.rb
281
+ - app/models/nquery/data_permission.rb
282
+ - app/models/nquery/data_source.rb
283
+ - app/models/nquery/embed_token.rb
284
+ - app/models/nquery/group.rb
285
+ - app/models/nquery/group_membership.rb
286
+ - app/models/nquery/query.rb
287
+ - app/models/nquery/user.rb
288
+ - app/views/layouts/nquery/application.html.erb
289
+ - app/views/layouts/nquery/auth.html.erb
290
+ - app/views/layouts/nquery/embed.html.erb
291
+ - app/views/nquery/admin/data_sources/edit.html.erb
292
+ - app/views/nquery/admin/data_sources/index.html.erb
293
+ - app/views/nquery/admin/data_sources/new.html.erb
294
+ - app/views/nquery/admin/groups/edit.html.erb
295
+ - app/views/nquery/admin/groups/index.html.erb
296
+ - app/views/nquery/admin/groups/new.html.erb
297
+ - app/views/nquery/admin/groups/show.html.erb
298
+ - app/views/nquery/admin/logs/index.html.erb
299
+ - app/views/nquery/admin/permissions/_collection.html.erb
300
+ - app/views/nquery/admin/permissions/_data_source.html.erb
301
+ - app/views/nquery/admin/permissions/_group.html.erb
302
+ - app/views/nquery/admin/permissions/by_collection.html.erb
303
+ - app/views/nquery/admin/permissions/by_data_source.html.erb
304
+ - app/views/nquery/admin/permissions/by_group.html.erb
305
+ - app/views/nquery/admin/users/edit.html.erb
306
+ - app/views/nquery/admin/users/index.html.erb
307
+ - app/views/nquery/admin/users/new.html.erb
308
+ - app/views/nquery/admin/users/show.html.erb
309
+ - app/views/nquery/charts/_builder_form.html.erb
310
+ - app/views/nquery/charts/_new_header.html.erb
311
+ - app/views/nquery/charts/_schema_tree.html.erb
312
+ - app/views/nquery/charts/edit.html.erb
313
+ - app/views/nquery/charts/embed.html.erb
314
+ - app/views/nquery/charts/new.html.erb
315
+ - app/views/nquery/charts/show.html.erb
316
+ - app/views/nquery/charts/update.turbo_stream.erb
317
+ - app/views/nquery/collection/dashboards/new.html.erb
318
+ - app/views/nquery/collections/_dashboard_card.html.erb
319
+ - app/views/nquery/collections/edit.html.erb
320
+ - app/views/nquery/collections/index.html.erb
321
+ - app/views/nquery/collections/new.html.erb
322
+ - app/views/nquery/collections/show.html.erb
323
+ - app/views/nquery/dashboard/charts/new.html.erb
324
+ - app/views/nquery/dashboards/_chart_card.html.erb
325
+ - app/views/nquery/dashboards/edit.html.erb
326
+ - app/views/nquery/dashboards/index.html.erb
327
+ - app/views/nquery/dashboards/show.html.erb
328
+ - app/views/nquery/embed/charts/show.html.erb
329
+ - app/views/nquery/embed/dashboards/show.html.erb
330
+ - app/views/nquery/home/index.html.erb
331
+ - app/views/nquery/imports/new.html.erb
332
+ - app/views/nquery/queries/edit.html.erb
333
+ - app/views/nquery/queries/new.html.erb
334
+ - app/views/nquery/registrations/new.html.erb
335
+ - app/views/nquery/sessions/new.html.erb
336
+ - app/views/nquery/shared/_auth_shell.html.erb
337
+ - app/views/nquery/shared/_breadcrumbs.html.erb
338
+ - app/views/nquery/shared/_chart_actions_menu.html.erb
339
+ - app/views/nquery/shared/_chart_row_actions.html.erb
340
+ - app/views/nquery/shared/_flash.html.erb
341
+ - app/views/nquery/shared/_icon.html.erb
342
+ - app/views/nquery/shared/_sidebar.html.erb
343
+ - app/views/nquery/shared/_topbar.html.erb
344
+ - config/importmap.rb
345
+ - config/routes.rb
346
+ - db/migrate/20260721000001_create_nquery_tables.rb
347
+ - db/migrate/20260721180000_add_archived_at_to_nquery_dashboards.rb
348
+ - db/migrate/20260721190000_add_archived_at_to_nquery_charts.rb
349
+ - db/migrate/20260721200000_add_archived_at_to_nquery_collections.rb
350
+ - lib/generators/nquery/install_generator.rb
351
+ - lib/nquery.rb
352
+ - lib/nquery/authorizes_collection.rb
353
+ - lib/nquery/configuration.rb
354
+ - lib/nquery/csv_importer.rb
355
+ - lib/nquery/data_sources/adapter.rb
356
+ - lib/nquery/data_sources/mysql_adapter.rb
357
+ - lib/nquery/data_sources/postgresql_adapter.rb
358
+ - lib/nquery/data_sources/rails_adapter.rb
359
+ - lib/nquery/data_sources/sqlite_adapter.rb
360
+ - lib/nquery/embed_token_service.rb
361
+ - lib/nquery/engine.rb
362
+ - lib/nquery/permissions/resolver.rb
363
+ - lib/nquery/query_runner.rb
364
+ - lib/nquery/sample_data/ecommerce.rb
365
+ - lib/nquery/schema_explorer.rb
366
+ - lib/nquery/seeder.rb
367
+ - lib/nquery/version.rb
368
+ - lib/tasks/nquery.rake
369
+ - nquery.gemspec
370
+ homepage: https://github.com/nquery/nquery
371
+ licenses:
372
+ - MIT
373
+ metadata:
374
+ homepage_uri: https://github.com/nquery/nquery
375
+ source_code_uri: https://github.com/nquery/nquery
376
+ post_install_message:
377
+ rdoc_options: []
378
+ require_paths:
379
+ - lib
380
+ required_ruby_version: !ruby/object:Gem::Requirement
381
+ requirements:
382
+ - - ">="
383
+ - !ruby/object:Gem::Version
384
+ version: 3.2.0
385
+ required_rubygems_version: !ruby/object:Gem::Requirement
386
+ requirements:
387
+ - - ">="
388
+ - !ruby/object:Gem::Version
389
+ version: '0'
390
+ requirements: []
391
+ rubygems_version: 3.0.3.1
392
+ signing_key:
393
+ specification_version: 4
394
+ summary: SQL charts, dashboards, and data visualization for Rails
395
+ test_files: []