nquery 0.1.0 → 0.1.2

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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -0
  3. data/README.md +263 -24
  4. data/app/assets/builds/nquery/application.css +61 -4
  5. data/app/assets/builds/nquery/application.js +107 -12
  6. data/app/controllers/concerns/nquery/breadcrumbs.rb +5 -3
  7. data/app/controllers/concerns/nquery/chart_actions.rb +1 -0
  8. data/app/controllers/concerns/nquery/chart_results.rb +17 -3
  9. data/app/controllers/nquery/admin/data_sources_controller.rb +49 -2
  10. data/app/controllers/nquery/admin/groups_controller.rb +8 -2
  11. data/app/controllers/nquery/admin/users_controller.rb +6 -1
  12. data/app/controllers/nquery/application_controller.rb +45 -28
  13. data/app/controllers/nquery/dashboards_controller.rb +30 -0
  14. data/app/controllers/nquery/embed/charts_controller.rb +1 -0
  15. data/app/controllers/nquery/embed/dashboards_controller.rb +1 -0
  16. data/app/controllers/nquery/errors_controller.rb +11 -0
  17. data/app/controllers/nquery/home_controller.rb +1 -0
  18. data/app/controllers/nquery/onboarding/admins_controller.rb +42 -0
  19. data/app/controllers/nquery/onboarding/base_controller.rb +27 -0
  20. data/app/controllers/nquery/onboarding/companies_controller.rb +30 -0
  21. data/app/controllers/nquery/onboarding/confirmations_controller.rb +48 -0
  22. data/app/controllers/nquery/onboarding/congrats_controller.rb +15 -0
  23. data/app/controllers/nquery/queries_controller.rb +0 -1
  24. data/app/controllers/nquery/sessions_controller.rb +14 -17
  25. data/app/helpers/nquery/data_sources_helper.rb +13 -0
  26. data/app/helpers/nquery/groups_helper.rb +19 -0
  27. data/app/javascript/nquery/controllers/data_source_form_controller.js +25 -0
  28. data/app/mailers/nquery/application_mailer.rb +7 -0
  29. data/app/mailers/nquery/devise_mailer.rb +9 -0
  30. data/app/models/nquery/audit.rb +2 -2
  31. data/app/models/nquery/collection.rb +1 -1
  32. data/app/models/nquery/dashboard.rb +1 -1
  33. data/app/models/nquery/data_source.rb +139 -4
  34. data/app/models/nquery/organization.rb +38 -0
  35. data/app/models/nquery/query.rb +8 -0
  36. data/app/models/nquery/user.rb +45 -10
  37. data/app/views/nquery/admin/data_sources/_form.html.erb +121 -0
  38. data/app/views/nquery/admin/data_sources/edit.html.erb +6 -8
  39. data/app/views/nquery/admin/data_sources/new.html.erb +6 -7
  40. data/app/views/nquery/admin/groups/_form.html.erb +47 -0
  41. data/app/views/nquery/admin/groups/edit.html.erb +15 -6
  42. data/app/views/nquery/admin/groups/index.html.erb +25 -20
  43. data/app/views/nquery/admin/groups/new.html.erb +6 -6
  44. data/app/views/nquery/admin/groups/show.html.erb +98 -19
  45. data/app/views/nquery/admin/logs/index.html.erb +26 -30
  46. data/app/views/nquery/charts/_builder_form.html.erb +6 -4
  47. data/app/views/nquery/charts/edit.html.erb +2 -1
  48. data/app/views/nquery/dashboards/index.html.erb +6 -0
  49. data/app/views/nquery/dashboards/new.html.erb +34 -0
  50. data/app/views/nquery/devise_mailer/confirmation_instructions.html.erb +5 -0
  51. data/app/views/nquery/devise_mailer/confirmation_instructions.text.erb +5 -0
  52. data/app/views/nquery/errors/internal_server_error.html.erb +10 -0
  53. data/app/views/nquery/errors/not_found.html.erb +10 -0
  54. data/app/views/nquery/home/index.html.erb +7 -15
  55. data/app/views/nquery/onboarding/admins/new.html.erb +21 -0
  56. data/app/views/nquery/onboarding/companies/new.html.erb +25 -0
  57. data/app/views/nquery/onboarding/confirmations/show.html.erb +17 -0
  58. data/app/views/nquery/onboarding/congrats/show.html.erb +11 -0
  59. data/app/views/nquery/sessions/new.html.erb +8 -9
  60. data/app/views/nquery/shared/_auth_shell.html.erb +1 -1
  61. data/app/views/nquery/shared/_topbar.html.erb +0 -4
  62. data/config/routes.rb +26 -7
  63. data/db/migrate/20260721000001_create_nquery_tables.rb +1 -1
  64. data/db/migrate/20260722000001_add_key_to_nquery_data_sources.rb +8 -0
  65. data/db/migrate/20260722000002_create_nquery_organizations.rb +11 -0
  66. data/db/migrate/20260722000003_add_devise_to_nquery_users.rb +35 -0
  67. data/db/migrate/20260722000004_add_onboarding_completed_at_to_nquery_organizations.rb +7 -0
  68. data/lib/generators/nquery/install_generator.rb +9 -17
  69. data/lib/nquery/configuration.rb +7 -23
  70. data/lib/nquery/csv_importer.rb +3 -3
  71. data/lib/nquery/data_sources/adapter.rb +4 -0
  72. data/lib/nquery/data_sources/postgresql_adapter.rb +15 -1
  73. data/lib/nquery/data_sources/rails_adapter.rb +5 -0
  74. data/lib/nquery/data_sources/syncer.rb +50 -0
  75. data/lib/nquery/encryption.rb +50 -0
  76. data/lib/nquery/engine.rb +42 -3
  77. data/lib/nquery/onboarding/admin_provisioner.rb +40 -0
  78. data/lib/nquery/onboarding/password_confirmation.rb +46 -0
  79. data/lib/nquery/onboarding.rb +40 -0
  80. data/lib/nquery/permissions/resolver.rb +14 -4
  81. data/lib/nquery/query_runner.rb +5 -9
  82. data/lib/nquery/readonly_sql.rb +25 -0
  83. data/lib/nquery/seeder.rb +25 -34
  84. data/lib/nquery/setup.rb +75 -0
  85. data/lib/nquery/version.rb +1 -1
  86. data/lib/nquery.rb +9 -0
  87. data/lib/tasks/nquery.rake +6 -0
  88. data/nquery.gemspec +11 -5
  89. metadata +135 -26
  90. data/app/controllers/nquery/registrations_controller.rb +0 -31
  91. data/app/views/nquery/registrations/new.html.erb +0 -34
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nquery
4
+ class Setup
5
+ ROOT_COLLECTION_NAME = "Our analytics"
6
+
7
+ def self.run!
8
+ new.run!
9
+ end
10
+
11
+ def run!
12
+ admin_group = ensure_group!("Administrators", "administrators")
13
+ all_users_group = ensure_group!("All Users", "all_users")
14
+
15
+ DataSources::Syncer.call
16
+
17
+ root_collection = Collection.find_or_create_by!(name: ROOT_COLLECTION_NAME, kind: "root")
18
+ data_source = default_data_source
19
+
20
+ seed_permissions!(admin_group, all_users_group, root_collection, data_source)
21
+ end
22
+
23
+ private
24
+
25
+ def ensure_group!(name, system_group, description = nil)
26
+ Group.find_or_create_by!(system_group: system_group) do |group|
27
+ group.name = name
28
+ group.description = description
29
+ end
30
+ end
31
+
32
+ def default_data_source
33
+ key = Nquery.configuration.default_data_source.to_s
34
+ DataSource.find_by!(key: key)
35
+ end
36
+
37
+ def seed_permissions!(admin_group, all_users_group, root_collection, data_source)
38
+ CollectionPermission.find_or_create_by!(group: admin_group, collection: root_collection) do |permission|
39
+ permission.access_level = "curate"
40
+ end
41
+ CollectionPermission.find_or_create_by!(group: all_users_group, collection: root_collection) do |permission|
42
+ permission.access_level = "view"
43
+ end
44
+
45
+ [admin_group, all_users_group].each do |group|
46
+ view_level = "can_view"
47
+ create_level = group.system_group == "administrators" ? "query_builder_and_native" : "no"
48
+
49
+ DataPermission.find_or_create_by!(
50
+ group: group,
51
+ data_source: data_source,
52
+ permission_type: "view_data",
53
+ resource_path: nil
54
+ ) do |permission|
55
+ permission.access_level = view_level
56
+ end
57
+
58
+ DataPermission.find_or_create_by!(
59
+ group: group,
60
+ data_source: data_source,
61
+ permission_type: "create_queries",
62
+ resource_path: nil
63
+ ) do |permission|
64
+ permission.access_level = create_level
65
+ end
66
+ end
67
+
68
+ ApplicationPermission::FEATURES.each do |feature|
69
+ ApplicationPermission.find_or_create_by!(group: admin_group, feature: feature) do |permission|
70
+ permission.access_level = "yes"
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nquery
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2" unless defined?(Nquery::VERSION)
5
5
  end
data/lib/nquery.rb CHANGED
@@ -1,9 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "turbo-rails"
4
+ require "devise"
5
+ require "devise/orm/active_record"
4
6
 
5
7
  require "nquery/version"
6
8
  require "nquery/configuration"
9
+ require "nquery/encryption"
7
10
  require "nquery/permissions/resolver"
8
11
  require "nquery/authorizes_collection"
9
12
  require "nquery/data_sources/adapter"
@@ -11,11 +14,17 @@ require "nquery/data_sources/rails_adapter"
11
14
  require "nquery/data_sources/postgresql_adapter"
12
15
  require "nquery/data_sources/mysql_adapter"
13
16
  require "nquery/data_sources/sqlite_adapter"
17
+ require "nquery/data_sources/syncer"
18
+ require "nquery/readonly_sql"
14
19
  require "nquery/query_runner"
15
20
  require "nquery/schema_explorer"
16
21
  require "nquery/embed_token_service"
17
22
  require "nquery/csv_importer"
18
23
  require "nquery/sample_data/ecommerce"
24
+ require "nquery/setup"
25
+ require "nquery/onboarding"
26
+ require "nquery/onboarding/admin_provisioner"
27
+ require "nquery/onboarding/password_confirmation"
19
28
  require "nquery/seeder"
20
29
  require "nquery/engine"
21
30
 
@@ -1,6 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  namespace :nquery do
4
+ desc "Provision default groups, data sources, and permissions"
5
+ task setup: :environment do
6
+ Nquery::Setup.run!
7
+ puts "nquery: setup complete"
8
+ end
9
+
4
10
  desc "Seed demo data for nquery"
5
11
  task seed: :environment do
6
12
  Nquery::Seeder.run!
data/nquery.gemspec CHANGED
@@ -9,20 +9,23 @@ Gem::Specification.new do |spec|
9
9
  spec.email = ["hello@nquery.dev"]
10
10
  spec.summary = "SQL charts, dashboards, and data visualization for Rails"
11
11
  spec.description = "Mountable Rails engine for SQL charts, dashboards, and analytics."
12
- spec.homepage = "https://github.com/nquery/nquery"
12
+ spec.homepage = "https://github.com/caiohenrique12/nquery"
13
13
  spec.license = "MIT"
14
14
  spec.required_ruby_version = ">= 3.2.0"
15
15
 
16
16
  spec.metadata["homepage_uri"] = spec.homepage
17
17
  spec.metadata["source_code_uri"] = spec.homepage
18
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
19
+ spec.metadata["bug_tracker_uri"] = "#{spec.homepage}/issues"
18
20
 
19
21
  spec.files = Dir.chdir(__dir__) do
20
- Dir["{app,config,db,lib}/**/*", "README.md", "LICENSE", "Rakefile", "nquery.gemspec"]
22
+ Dir["{app,config,db,lib}/**/*", "README.md", "CHANGELOG.md", "LICENSE", "Rakefile", "nquery.gemspec"]
21
23
  .reject { |f| f.include?("/templates/") && f.end_with?(".tt") }
22
24
  .select { |f| File.file?(f) }
23
25
  end
24
26
 
25
27
  spec.add_dependency "rails", ">= 7.1", "< 9"
28
+ spec.add_dependency "devise", ">= 5.0.4", "< 6"
26
29
  spec.add_dependency "bcrypt", "~> 3.1"
27
30
  spec.add_dependency "csv"
28
31
  spec.add_dependency "importmap-rails"
@@ -32,9 +35,12 @@ Gem::Specification.new do |spec|
32
35
 
33
36
  spec.add_development_dependency "rspec-rails", "~> 7.0"
34
37
  spec.add_development_dependency "capybara", "~> 3.40"
35
- spec.add_development_dependency "selenium-webdriver", "~> 4.0"
36
- spec.add_development_dependency "sqlite3", "~> 2.0"
38
+ spec.add_development_dependency "sqlite3", ">= 2.9.6", "< 3"
37
39
  spec.add_development_dependency "pg", "~> 1.5"
38
- spec.add_development_dependency "puma", "~> 6.0"
40
+ spec.add_development_dependency "puma", ">= 7.2.1", "< 8"
39
41
  spec.add_development_dependency "simplecov", "~> 0.22"
42
+ spec.add_development_dependency "rubocop", "~> 1.75"
43
+ spec.add_development_dependency "rubocop-rails-omakase", "~> 1.1"
44
+ spec.add_development_dependency "brakeman", "~> 7.0"
45
+ spec.add_development_dependency "bundler-audit", "~> 0.9"
40
46
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nquery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nquery Contributors
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-22 00:00:00.000000000 Z
11
+ date: 2026-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '9'
33
+ - !ruby/object:Gem::Dependency
34
+ name: devise
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 5.0.4
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '6'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 5.0.4
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '6'
33
53
  - !ruby/object:Gem::Dependency
34
54
  name: bcrypt
35
55
  requirement: !ruby/object:Gem::Requirement
@@ -143,75 +163,129 @@ dependencies:
143
163
  - !ruby/object:Gem::Version
144
164
  version: '3.40'
145
165
  - !ruby/object:Gem::Dependency
146
- name: selenium-webdriver
166
+ name: sqlite3
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: 2.9.6
172
+ - - "<"
173
+ - !ruby/object:Gem::Version
174
+ version: '3'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: 2.9.6
182
+ - - "<"
183
+ - !ruby/object:Gem::Version
184
+ version: '3'
185
+ - !ruby/object:Gem::Dependency
186
+ name: pg
147
187
  requirement: !ruby/object:Gem::Requirement
148
188
  requirements:
149
189
  - - "~>"
150
190
  - !ruby/object:Gem::Version
151
- version: '4.0'
191
+ version: '1.5'
152
192
  type: :development
153
193
  prerelease: false
154
194
  version_requirements: !ruby/object:Gem::Requirement
155
195
  requirements:
156
196
  - - "~>"
157
197
  - !ruby/object:Gem::Version
158
- version: '4.0'
198
+ version: '1.5'
159
199
  - !ruby/object:Gem::Dependency
160
- name: sqlite3
200
+ name: puma
201
+ requirement: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: 7.2.1
206
+ - - "<"
207
+ - !ruby/object:Gem::Version
208
+ version: '8'
209
+ type: :development
210
+ prerelease: false
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: 7.2.1
216
+ - - "<"
217
+ - !ruby/object:Gem::Version
218
+ version: '8'
219
+ - !ruby/object:Gem::Dependency
220
+ name: simplecov
161
221
  requirement: !ruby/object:Gem::Requirement
162
222
  requirements:
163
223
  - - "~>"
164
224
  - !ruby/object:Gem::Version
165
- version: '2.0'
225
+ version: '0.22'
166
226
  type: :development
167
227
  prerelease: false
168
228
  version_requirements: !ruby/object:Gem::Requirement
169
229
  requirements:
170
230
  - - "~>"
171
231
  - !ruby/object:Gem::Version
172
- version: '2.0'
232
+ version: '0.22'
173
233
  - !ruby/object:Gem::Dependency
174
- name: pg
234
+ name: rubocop
175
235
  requirement: !ruby/object:Gem::Requirement
176
236
  requirements:
177
237
  - - "~>"
178
238
  - !ruby/object:Gem::Version
179
- version: '1.5'
239
+ version: '1.75'
180
240
  type: :development
181
241
  prerelease: false
182
242
  version_requirements: !ruby/object:Gem::Requirement
183
243
  requirements:
184
244
  - - "~>"
185
245
  - !ruby/object:Gem::Version
186
- version: '1.5'
246
+ version: '1.75'
187
247
  - !ruby/object:Gem::Dependency
188
- name: puma
248
+ name: rubocop-rails-omakase
189
249
  requirement: !ruby/object:Gem::Requirement
190
250
  requirements:
191
251
  - - "~>"
192
252
  - !ruby/object:Gem::Version
193
- version: '6.0'
253
+ version: '1.1'
194
254
  type: :development
195
255
  prerelease: false
196
256
  version_requirements: !ruby/object:Gem::Requirement
197
257
  requirements:
198
258
  - - "~>"
199
259
  - !ruby/object:Gem::Version
200
- version: '6.0'
260
+ version: '1.1'
201
261
  - !ruby/object:Gem::Dependency
202
- name: simplecov
262
+ name: brakeman
203
263
  requirement: !ruby/object:Gem::Requirement
204
264
  requirements:
205
265
  - - "~>"
206
266
  - !ruby/object:Gem::Version
207
- version: '0.22'
267
+ version: '7.0'
208
268
  type: :development
209
269
  prerelease: false
210
270
  version_requirements: !ruby/object:Gem::Requirement
211
271
  requirements:
212
272
  - - "~>"
213
273
  - !ruby/object:Gem::Version
214
- version: '0.22'
274
+ version: '7.0'
275
+ - !ruby/object:Gem::Dependency
276
+ name: bundler-audit
277
+ requirement: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - "~>"
280
+ - !ruby/object:Gem::Version
281
+ version: '0.9'
282
+ type: :development
283
+ prerelease: false
284
+ version_requirements: !ruby/object:Gem::Requirement
285
+ requirements:
286
+ - - "~>"
287
+ - !ruby/object:Gem::Version
288
+ version: '0.9'
215
289
  description: Mountable Rails engine for SQL charts, dashboards, and analytics.
216
290
  email:
217
291
  - hello@nquery.dev
@@ -219,6 +293,7 @@ executables: []
219
293
  extensions: []
220
294
  extra_rdoc_files: []
221
295
  files:
296
+ - CHANGELOG.md
222
297
  - LICENSE
223
298
  - README.md
224
299
  - Rakefile
@@ -254,21 +329,31 @@ files:
254
329
  - app/controllers/nquery/dashboards_controller.rb
255
330
  - app/controllers/nquery/embed/charts_controller.rb
256
331
  - app/controllers/nquery/embed/dashboards_controller.rb
332
+ - app/controllers/nquery/errors_controller.rb
257
333
  - app/controllers/nquery/home_controller.rb
258
334
  - app/controllers/nquery/imports_controller.rb
335
+ - app/controllers/nquery/onboarding/admins_controller.rb
336
+ - app/controllers/nquery/onboarding/base_controller.rb
337
+ - app/controllers/nquery/onboarding/companies_controller.rb
338
+ - app/controllers/nquery/onboarding/confirmations_controller.rb
339
+ - app/controllers/nquery/onboarding/congrats_controller.rb
259
340
  - app/controllers/nquery/queries_controller.rb
260
- - app/controllers/nquery/registrations_controller.rb
261
341
  - app/controllers/nquery/sessions_controller.rb
262
342
  - app/helpers/nquery/charts_helper.rb
263
343
  - app/helpers/nquery/collections_helper.rb
264
344
  - app/helpers/nquery/components_helper.rb
345
+ - app/helpers/nquery/data_sources_helper.rb
346
+ - app/helpers/nquery/groups_helper.rb
265
347
  - app/helpers/nquery/home_helper.rb
266
348
  - app/helpers/nquery/icon_helper.rb
267
349
  - app/helpers/nquery/navigation_helper.rb
268
350
  - app/javascript/nquery/controllers/chart_preview_controller.js
269
351
  - app/javascript/nquery/controllers/csv_mapper_controller.js
270
352
  - app/javascript/nquery/controllers/dashboard_grid_controller.js
353
+ - app/javascript/nquery/controllers/data_source_form_controller.js
271
354
  - app/javascript/nquery/controllers/query_editor_controller.js
355
+ - app/mailers/nquery/application_mailer.rb
356
+ - app/mailers/nquery/devise_mailer.rb
272
357
  - app/models/nquery/application_permission.rb
273
358
  - app/models/nquery/application_record.rb
274
359
  - app/models/nquery/audit.rb
@@ -283,14 +368,17 @@ files:
283
368
  - app/models/nquery/embed_token.rb
284
369
  - app/models/nquery/group.rb
285
370
  - app/models/nquery/group_membership.rb
371
+ - app/models/nquery/organization.rb
286
372
  - app/models/nquery/query.rb
287
373
  - app/models/nquery/user.rb
288
374
  - app/views/layouts/nquery/application.html.erb
289
375
  - app/views/layouts/nquery/auth.html.erb
290
376
  - app/views/layouts/nquery/embed.html.erb
377
+ - app/views/nquery/admin/data_sources/_form.html.erb
291
378
  - app/views/nquery/admin/data_sources/edit.html.erb
292
379
  - app/views/nquery/admin/data_sources/index.html.erb
293
380
  - app/views/nquery/admin/data_sources/new.html.erb
381
+ - app/views/nquery/admin/groups/_form.html.erb
294
382
  - app/views/nquery/admin/groups/edit.html.erb
295
383
  - app/views/nquery/admin/groups/index.html.erb
296
384
  - app/views/nquery/admin/groups/new.html.erb
@@ -324,14 +412,22 @@ files:
324
412
  - app/views/nquery/dashboards/_chart_card.html.erb
325
413
  - app/views/nquery/dashboards/edit.html.erb
326
414
  - app/views/nquery/dashboards/index.html.erb
415
+ - app/views/nquery/dashboards/new.html.erb
327
416
  - app/views/nquery/dashboards/show.html.erb
417
+ - app/views/nquery/devise_mailer/confirmation_instructions.html.erb
418
+ - app/views/nquery/devise_mailer/confirmation_instructions.text.erb
328
419
  - app/views/nquery/embed/charts/show.html.erb
329
420
  - app/views/nquery/embed/dashboards/show.html.erb
421
+ - app/views/nquery/errors/internal_server_error.html.erb
422
+ - app/views/nquery/errors/not_found.html.erb
330
423
  - app/views/nquery/home/index.html.erb
331
424
  - app/views/nquery/imports/new.html.erb
425
+ - app/views/nquery/onboarding/admins/new.html.erb
426
+ - app/views/nquery/onboarding/companies/new.html.erb
427
+ - app/views/nquery/onboarding/confirmations/show.html.erb
428
+ - app/views/nquery/onboarding/congrats/show.html.erb
332
429
  - app/views/nquery/queries/edit.html.erb
333
430
  - app/views/nquery/queries/new.html.erb
334
- - app/views/nquery/registrations/new.html.erb
335
431
  - app/views/nquery/sessions/new.html.erb
336
432
  - app/views/nquery/shared/_auth_shell.html.erb
337
433
  - app/views/nquery/shared/_breadcrumbs.html.erb
@@ -347,6 +443,10 @@ files:
347
443
  - db/migrate/20260721180000_add_archived_at_to_nquery_dashboards.rb
348
444
  - db/migrate/20260721190000_add_archived_at_to_nquery_charts.rb
349
445
  - db/migrate/20260721200000_add_archived_at_to_nquery_collections.rb
446
+ - db/migrate/20260722000001_add_key_to_nquery_data_sources.rb
447
+ - db/migrate/20260722000002_create_nquery_organizations.rb
448
+ - db/migrate/20260722000003_add_devise_to_nquery_users.rb
449
+ - db/migrate/20260722000004_add_onboarding_completed_at_to_nquery_organizations.rb
350
450
  - lib/generators/nquery/install_generator.rb
351
451
  - lib/nquery.rb
352
452
  - lib/nquery/authorizes_collection.rb
@@ -357,23 +457,32 @@ files:
357
457
  - lib/nquery/data_sources/postgresql_adapter.rb
358
458
  - lib/nquery/data_sources/rails_adapter.rb
359
459
  - lib/nquery/data_sources/sqlite_adapter.rb
460
+ - lib/nquery/data_sources/syncer.rb
360
461
  - lib/nquery/embed_token_service.rb
462
+ - lib/nquery/encryption.rb
361
463
  - lib/nquery/engine.rb
464
+ - lib/nquery/onboarding.rb
465
+ - lib/nquery/onboarding/admin_provisioner.rb
466
+ - lib/nquery/onboarding/password_confirmation.rb
362
467
  - lib/nquery/permissions/resolver.rb
363
468
  - lib/nquery/query_runner.rb
469
+ - lib/nquery/readonly_sql.rb
364
470
  - lib/nquery/sample_data/ecommerce.rb
365
471
  - lib/nquery/schema_explorer.rb
366
472
  - lib/nquery/seeder.rb
473
+ - lib/nquery/setup.rb
367
474
  - lib/nquery/version.rb
368
475
  - lib/tasks/nquery.rake
369
476
  - nquery.gemspec
370
- homepage: https://github.com/nquery/nquery
477
+ homepage: https://github.com/caiohenrique12/nquery
371
478
  licenses:
372
479
  - MIT
373
480
  metadata:
374
- homepage_uri: https://github.com/nquery/nquery
375
- source_code_uri: https://github.com/nquery/nquery
376
- post_install_message:
481
+ homepage_uri: https://github.com/caiohenrique12/nquery
482
+ source_code_uri: https://github.com/caiohenrique12/nquery
483
+ changelog_uri: https://github.com/caiohenrique12/nquery/blob/main/CHANGELOG.md
484
+ bug_tracker_uri: https://github.com/caiohenrique12/nquery/issues
485
+ post_install_message:
377
486
  rdoc_options: []
378
487
  require_paths:
379
488
  - lib
@@ -388,8 +497,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
388
497
  - !ruby/object:Gem::Version
389
498
  version: '0'
390
499
  requirements: []
391
- rubygems_version: 3.0.3.1
392
- signing_key:
500
+ rubygems_version: 3.5.22
501
+ signing_key:
393
502
  specification_version: 4
394
503
  summary: SQL charts, dashboards, and data visualization for Rails
395
504
  test_files: []
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Nquery
4
- class RegistrationsController < ApplicationController
5
- skip_before_action :_authenticate!
6
- layout "nquery/auth"
7
-
8
- def new
9
- redirect_to root_path if current_nquery_user
10
- @user = User.new
11
- end
12
-
13
- def create
14
- @user = User.new(registration_params)
15
- if @user.save
16
- @user.ensure_all_users_membership!
17
- @user.ensure_personal_collection!
18
- session[:nquery_user_id] = @user.id
19
- redirect_to root_path, notice: "Welcome to nquery!"
20
- else
21
- render :new, status: :unprocessable_content
22
- end
23
- end
24
-
25
- private
26
-
27
- def registration_params
28
- params.require(:user).permit(:email, :first_name, :last_name, :password, :password_confirmation)
29
- end
30
- end
31
- end
@@ -1,34 +0,0 @@
1
- <%= render layout: "nquery/shared/auth_shell",
2
- locals: {
3
- title: "Create your account",
4
- subtitle: "Get started with SQL charts and dashboards in minutes.",
5
- footer_text: "Already have an account?",
6
- footer_link: login_path,
7
- footer_label: "Sign in"
8
- } do %>
9
- <%= form_with model: @user, url: signup_path, class: "nq-form nq-auth-form" do |f| %>
10
- <div class="nq-form-row">
11
- <%= f.label :email, "Email address" %>
12
- <%= f.email_field :email, class: "nq-input", required: true, autofocus: true, autocomplete: "email", placeholder: "you@company.com" %>
13
- </div>
14
- <div class="nq-form-row nq-auth-form-row-split">
15
- <div>
16
- <%= f.label :first_name, "First name" %>
17
- <%= f.text_field :first_name, class: "nq-input", required: true, autocomplete: "given-name", placeholder: "Jane" %>
18
- </div>
19
- <div>
20
- <%= f.label :last_name, "Last name" %>
21
- <%= f.text_field :last_name, class: "nq-input", required: true, autocomplete: "family-name", placeholder: "Doe" %>
22
- </div>
23
- </div>
24
- <div class="nq-form-row">
25
- <%= f.label :password, "Password" %>
26
- <%= f.password_field :password, class: "nq-input", required: true, autocomplete: "new-password", placeholder: "At least 8 characters" %>
27
- </div>
28
- <div class="nq-form-row">
29
- <%= f.label :password_confirmation, "Confirm password" %>
30
- <%= f.password_field :password_confirmation, class: "nq-input", required: true, autocomplete: "new-password", placeholder: "Re-enter your password" %>
31
- </div>
32
- <%= f.submit "Create account", class: "nq-btn nq-btn-primary nq-btn-block nq-auth-submit" %>
33
- <% end %>
34
- <% end %>