solid_litequeen 0.6.1 → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1e70145a172d627ebc83e61e3d2dff09d994487fc2dd3116687145bb7e36ce5
4
- data.tar.gz: 06d5e0219a79a1ff5d0f7dbb290e477689160bcfad947dadd3e9bada60f2b986
3
+ metadata.gz: d9e57ed5cad271d83a2a34e75779abfdbd3c28cfde1c8ecb1f2d2aed1a46ce69
4
+ data.tar.gz: 9dc4ed53f255a0d8f926985426ddd2eca248aa6de1c6f4398e6c0b86127c85f2
5
5
  SHA512:
6
- metadata.gz: aaef9b56b95cf4b550fcb77bae49bbe4275992e4670019f8310db8a47ab3a473b8736dee5a29c0c29772e21ea660550489d1461ec5433f9f41475aa463b05131
7
- data.tar.gz: 2e256d20ba97eebaae057f8ac06eb1a16d996fce3dd71d2e4ad7aed85f30bc6f6b8333e7ec21c81d5c482d7ca5e7b28eeae68188b9a852f5cb15d5e801f9db58
6
+ metadata.gz: 919d4743f19a2ac203bcb68a192625c2bbf9854403332d6c42828075920308b5cf54fd6e1fc447b149011b84ccca28d265daecd94d65f7a461020fb6242733bd
7
+ data.tar.gz: ab1380c616424ca7b3e6b246f828ff704991407a0e436409a8bace5ee5429b39486efe3d7e98a253ddf229b8f9fe73104ceafd5dd34423b9591143bf660a2e4d
@@ -29,10 +29,10 @@ module SolidLitequeen
29
29
  end
30
30
 
31
31
  def table_rows
32
- database_id = params.expect(:database_id)
32
+ @database_id = params.expect(:database_id)
33
33
  @table_name = params.expect(:table)
34
34
 
35
- @database_location = Base64.urlsafe_decode64(database_id)
35
+ @database_location = Base64.urlsafe_decode64(@database_id)
36
36
 
37
37
  DynamicDatabase.establish_connection(
38
38
  adapter: "sqlite3",
@@ -40,10 +40,11 @@ module SolidLitequeen
40
40
  )
41
41
 
42
42
  @data = DynamicDatabase.connection.select_all("SELECT * FROM #{@table_name} LIMIT 50")
43
+ @row_count = row_count = DynamicDatabase.connection.select_value("SELECT COUNT(*) FROM #{@table_name}").to_i
43
44
  end
44
45
 
45
46
  def download
46
- database_id = params.expect(:id)
47
+ database_id = params.expect(:database_id)
47
48
  database_location = Base64.urlsafe_decode64(database_id)
48
49
 
49
50
  # Verify the file exists
@@ -1,4 +1,9 @@
1
1
  module SolidLitequeen
2
2
  module ApplicationHelper
3
+ def available_databases
4
+ @available_databases ||= ActiveRecord::Base.configurations.configurations.select do |config|
5
+ config.adapter == "sqlite3" && config.env_name == Rails.env && config.database.present?
6
+ end
7
+ end
3
8
  end
4
9
  end
@@ -22,9 +22,10 @@
22
22
  <%= yield :head %>
23
23
  </head>
24
24
  <body class="">
25
-
26
-
27
- <%= yield %>
25
+ <header>
26
+ <%= render "solid_litequeen/database-selector" %>
27
+ </header>
28
+ <%= yield %>
28
29
 
29
30
  </body>
30
31
  </html>
@@ -0,0 +1,25 @@
1
+
2
+ <% if controller.controller_name == "databases" && action_name.in?([ "show", "table_rows"]) %>
3
+ <div class="w-86">
4
+ <div class="database-selector p-4">
5
+ <select id="database-select" class="block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500">
6
+ <option value="">Select a database...</option>
7
+ <% available_databases.each do |db| %>
8
+ <option value="<%= Base64.urlsafe_encode64(db.database) %>" <%= 'selected' if defined?(@database_id) && @database_id == Base64.urlsafe_encode64(db.database) %>>
9
+ <%= db.database %>
10
+ </option>
11
+ <% end %>
12
+ </select>
13
+
14
+ <script>
15
+ document.getElementById('database-select').addEventListener('change', function() {
16
+ if (this.value) {
17
+ window.location.href = '<%= database_path("") %>' + this.value;
18
+ }
19
+ });
20
+ </script>
21
+ </div>
22
+
23
+ </div>
24
+ <% end %>
25
+
@@ -3,12 +3,12 @@
3
3
  <h1 class="text-3xl font-bold text-gray-900 mb-6">Solid Lite Queen</h1>
4
4
 
5
5
  <div class="mb-6">
6
- <p class="text-gray-600"><%= pluralize(@databases.count, "SQLite database") %> found</p>
6
+ <p class="text-gray-600"><%= pluralize(available_databases.count, "SQLite database") %> found</p>
7
7
  </div>
8
8
 
9
- <% if @databases.any? %>
9
+ <% if available_databases.any? %>
10
10
  <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6">
11
- <% @databases.each do |db| %>
11
+ <% available_databases.each do |db| %>
12
12
  <a href="<%= database_path(Base64.urlsafe_encode64(db.database)) %>" class="block bg-white rounded-lg shadow-sm border border-gray-200 hover:shadow-md transition duration-150 overflow-hidden">
13
13
  <div class="p-5">
14
14
  <div class="flex items-center justify-between mb-2">
@@ -34,4 +34,5 @@
34
34
  </div>
35
35
  <% end %>
36
36
 
37
- </div>
37
+ </div>
38
+
@@ -12,7 +12,7 @@
12
12
  </h1>
13
13
 
14
14
  <div class="mb-6">
15
- <p class="text-gray-600"><%= pluralize(@data.rows.count, "row") %> found</p>
15
+ <p class="text-gray-600"><%= pluralize(@row_count, "row") %> found</p>
16
16
  </div>
17
17
 
18
18
  <div class="bg-white rounded-lg shadow overflow-x-auto">
data/config/routes.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  SolidLitequeen::Engine.routes.draw do
2
2
  resources :databases, only: [ :index, :show ] do
3
3
  get "/tables/:table", to: "databases#table_rows", as: :table_rows
4
- get "databases/:id/download", to: "databases#download", as: "download"
4
+ get "download", to: "databases#download", as: "download"
5
5
  end
6
6
  root to: "databases#index"
7
7
  end
@@ -1,3 +1,3 @@
1
1
  module SolidLitequeen
2
- VERSION = "0.6.1"
2
+ VERSION = "0.7.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_litequeen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vik Borges
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-04 00:00:00.000000000 Z
11
+ date: 2025-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -165,6 +165,7 @@ files:
165
165
  - app/mailers/solid_litequeen/application_mailer.rb
166
166
  - app/models/solid_litequeen/application_record.rb
167
167
  - app/views/layouts/solid_litequeen/application.html.erb
168
+ - app/views/solid_litequeen/_database-selector.html.erb
168
169
  - app/views/solid_litequeen/databases/index.html.erb
169
170
  - app/views/solid_litequeen/databases/show.html.erb
170
171
  - app/views/solid_litequeen/databases/table_rows.html.erb