sqlui 0.1.8 → 0.1.10

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sqlui.rb +17 -6
  3. data/resources/sqlui.js +32 -13
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 841f89dc1fb61aa4395aca199aba43cd855e34e9641ea9cf2dc18b356b53cb93
4
- data.tar.gz: f34d885b1c9f40e804fde6426bdfd7217ef912b2968b6987861ee6624fd60b27
3
+ metadata.gz: 43388f7bb405a390a4ae0e49650475dcc64c7a649df8d7333a0a7f278974817e
4
+ data.tar.gz: 43104948aec2eba3df960657cfc242092ef2587ce5bca6223102351462c56c17
5
5
  SHA512:
6
- metadata.gz: dea76e1239e97123db860d4f7d729c2a8c317e827105f5ef9c690e23001a2dd5070ad594fe9b87036eeeefd545c004a1c64a51a4f6b48fa7e40cd1e43efdc286
7
- data.tar.gz: 671cbc3930edda13b041dae163075e64b59e7069abaa299cb14121e9272c91887aea03165d69ffe4abb60ac49b1d5d6acfb8c72aae2c2c34c4e84877b8897220
6
+ metadata.gz: d9752cbb037aaececfb4d1025bdbd3a4f1da1da35815321570ff64955589876c9f73c8a5605d7c4e8b43fc705b2d124b82d8249a35908acc1b191282f370f60e
7
+ data.tar.gz: 75897a760e3f24f21b2853ca6a368a5375f364731de82bdc65e17f87af67385b03c1fa6970d80b861f1f2f5b2efd0279d430522faf743ac86433a23dea3ba219
data/lib/sqlui.rb CHANGED
@@ -5,11 +5,12 @@ require 'set'
5
5
  class SQLUI
6
6
  MAX_ROWS = 1_000
7
7
 
8
- def initialize(name:, saved_path:, max_rows: MAX_ROWS, &block)
8
+ def initialize(client:, table_schema: nil, name:, saved_path:, max_rows: MAX_ROWS)
9
+ @client = client
10
+ @table_schema = table_schema
9
11
  @name = name
10
12
  @saved_path = saved_path
11
13
  @max_rows = max_rows
12
- @queryer = block
13
14
  @resources_dir = File.join(File.expand_path('..', File.dirname(__FILE__)), 'resources')
14
15
  end
15
16
 
@@ -77,7 +78,12 @@ class SQLUI
77
78
  end
78
79
 
79
80
  def load_metadata
80
- stats_result = @queryer.call(
81
+ if @table_schema
82
+ where_clause = "where table_schema = '#{@table_schema}'"
83
+ else
84
+ where_clause = "where table_schema not in('mysql', 'sys')"
85
+ end
86
+ stats_result = @client.query(
81
87
  <<~SQL
82
88
  select
83
89
  table_schema,
@@ -87,7 +93,7 @@ class SQLUI
87
93
  non_unique,
88
94
  column_name
89
95
  from information_schema.statistics
90
- where table_schema not in('mysql', 'sys')
96
+ #{where_clause}
91
97
  order by table_schema, table_name, if(index_name = "PRIMARY", 0, index_name), seq_in_index;
92
98
  SQL
93
99
  )
@@ -131,7 +137,12 @@ class SQLUI
131
137
  column[:column_name] = row['column_name']
132
138
  end
133
139
 
134
- column_result = @queryer.call(
140
+ if @table_schema
141
+ where_clause = "where table_schema = '#{@table_schema}'"
142
+ else
143
+ where_clause = "where table_schema not in('information_schema' 'mysql', 'performance_schema', 'sys')"
144
+ end
145
+ column_result = @client.query(
135
146
  <<~SQL
136
147
  select
137
148
  table_schema,
@@ -173,7 +184,7 @@ class SQLUI
173
184
  end
174
185
 
175
186
  def execute_query(sql)
176
- result = @queryer.call(sql)
187
+ result = @client.query(sql)
177
188
  rows = result.map { |row| row.values }
178
189
  columns = result.first&.keys || []
179
190
  column_types = columns.map { |_| 'string' }
data/resources/sqlui.js CHANGED
@@ -23951,19 +23951,18 @@ var sqlui = (function (exports) {
23951
23951
  }
23952
23952
 
23953
23953
  const schemasElement = document.getElementById("schemas");
23954
- const schemaNames = Object.keys(window.metadata["schemas"]);
23955
- schemaNames.forEach(function(schemaName) {
23956
- const optionElement = document.createElement("option");
23957
- optionElement.value = schemaName;
23958
- optionElement.innerText = schemaName;
23959
- schemasElement.appendChild(optionElement);
23960
- });
23961
23954
  const tablesElement = document.getElementById("tables");
23962
- schemasElement.addEventListener("change", function() {
23955
+ const columnsElement = document.getElementById("columns");
23956
+ const indexesElement = document.getElementById("indexes");
23957
+
23958
+ const schemaNames = Object.keys(window.metadata["schemas"]);
23959
+ if (schemaNames.length == 1) {
23960
+ schemasElement.style.display = 'none';
23961
+ // TODO: duplicate code
23963
23962
  while(tablesElement.firstChild) {
23964
23963
  tablesElement.removeChild(tablesElement.firstChild);
23965
23964
  }
23966
- const schemaName = schemasElement.value;
23965
+ const schemaName = schemaNames[0];
23967
23966
  const schema = window.metadata["schemas"][schemaName];
23968
23967
  const tableNames = Object.keys(schema["tables"]);
23969
23968
  tableNames.forEach(function(tableName) {
@@ -23972,9 +23971,29 @@ var sqlui = (function (exports) {
23972
23971
  optionElement.innerText = tableName;
23973
23972
  tablesElement.appendChild(optionElement);
23974
23973
  });
23975
- });
23976
- const columnsElement = document.getElementById("columns");
23977
- const indexesElement = document.getElementById("indexes");
23974
+ } else {
23975
+ schemasElement.style.display = 'flex';
23976
+ schemaNames.forEach(function(schemaName) {
23977
+ const optionElement = document.createElement("option");
23978
+ optionElement.value = schemaName;
23979
+ optionElement.innerText = schemaName;
23980
+ schemasElement.appendChild(optionElement);
23981
+ });
23982
+ schemasElement.addEventListener("change", function() {
23983
+ while(tablesElement.firstChild) {
23984
+ tablesElement.removeChild(tablesElement.firstChild);
23985
+ }
23986
+ const schemaName = schemasElement.value;
23987
+ const schema = window.metadata["schemas"][schemaName];
23988
+ const tableNames = Object.keys(schema["tables"]);
23989
+ tableNames.forEach(function(tableName) {
23990
+ const optionElement = document.createElement("option");
23991
+ optionElement.value = tableName;
23992
+ optionElement.innerText = tableName;
23993
+ tablesElement.appendChild(optionElement);
23994
+ });
23995
+ });
23996
+ }
23978
23997
  tablesElement.addEventListener("change", function() {
23979
23998
  while(columnsElement.firstChild) {
23980
23999
  columnsElement.removeChild(columnsElement.firstChild);
@@ -23982,7 +24001,7 @@ var sqlui = (function (exports) {
23982
24001
  while(indexesElement.firstChild) {
23983
24002
  indexesElement.removeChild(indexesElement.firstChild);
23984
24003
  }
23985
- const schemaName = schemasElement.value;
24004
+ const schemaName = schemaNames.length == 1 ? schemaNames[0] : schemasElement.value;
23986
24005
  const tableName = tablesElement.value;
23987
24006
  const table = window.metadata["schemas"][schemaName]["tables"][tableName];
23988
24007
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Dower
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-18 00:00:00.000000000 Z
11
+ date: 2022-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-core