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.
- checksums.yaml +4 -4
- data/lib/sqlui.rb +17 -6
- data/resources/sqlui.js +32 -13
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 43388f7bb405a390a4ae0e49650475dcc64c7a649df8d7333a0a7f278974817e
         | 
| 4 | 
            +
              data.tar.gz: 43104948aec2eba3df960657cfc242092ef2587ce5bca6223102351462c56c17
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 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 | 
| 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 | 
            -
                 | 
| 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 | 
            -
                     | 
| 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 | 
            -
                 | 
| 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 = @ | 
| 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 | 
            -
                  | 
| 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 =  | 
| 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 | 
            -
             | 
| 23977 | 
            -
             | 
| 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. | 
| 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- | 
| 11 | 
            +
            date: 2022-10-19 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rspec-core
         |