sqlui 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sqlui.rb +13 -2
  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: 419351d0941030d9b1ab17842fd289a7550a6b78a45d59213e2143b29442e363
4
- data.tar.gz: 7c66542a8e6503c7a38f05f5fc02fc17e022c08cf0303f411053968d4138e683
3
+ metadata.gz: 43388f7bb405a390a4ae0e49650475dcc64c7a649df8d7333a0a7f278974817e
4
+ data.tar.gz: 43104948aec2eba3df960657cfc242092ef2587ce5bca6223102351462c56c17
5
5
  SHA512:
6
- metadata.gz: 1fd9196bda8b7ba45082d03a8a0bc2606875cc0ca0b38371b4c3e924b612eb4d6d148452bfde1ba6a06ca75c4132f48312defe447dd64aaa4e94a19bdf0189fb
7
- data.tar.gz: de9b1c4ceb3caaf8a364a1964214002cd73161911aedd194fda78a72d24ea843e09982c86234e5265ee2dc55cabd396f6b209bf0a11689175e0da04b04fffeda
6
+ metadata.gz: d9752cbb037aaececfb4d1025bdbd3a4f1da1da35815321570ff64955589876c9f73c8a5605d7c4e8b43fc705b2d124b82d8249a35908acc1b191282f370f60e
7
+ data.tar.gz: 75897a760e3f24f21b2853ca6a368a5375f364731de82bdc65e17f87af67385b03c1fa6970d80b861f1f2f5b2efd0279d430522faf743ac86433a23dea3ba219
data/lib/sqlui.rb CHANGED
@@ -5,8 +5,9 @@ require 'set'
5
5
  class SQLUI
6
6
  MAX_ROWS = 1_000
7
7
 
8
- def initialize(client:, name:, saved_path:, max_rows: MAX_ROWS)
8
+ def initialize(client:, table_schema: nil, name:, saved_path:, max_rows: MAX_ROWS)
9
9
  @client = client
10
+ @table_schema = table_schema
10
11
  @name = name
11
12
  @saved_path = saved_path
12
13
  @max_rows = max_rows
@@ -77,6 +78,11 @@ class SQLUI
77
78
  end
78
79
 
79
80
  def load_metadata
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
80
86
  stats_result = @client.query(
81
87
  <<~SQL
82
88
  select
@@ -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,6 +137,11 @@ class SQLUI
131
137
  column[:column_name] = row['column_name']
132
138
  end
133
139
 
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
134
145
  column_result = @client.query(
135
146
  <<~SQL
136
147
  select
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.9
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