mysql_casual_explain 0.1.0 → 1.0.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: bfa3ca12a315eb43f64ad0250f20ae3e2a10c02f1b7ed3092ed43f4a5a58099f
4
- data.tar.gz: ccbaa468d6f453eb069cef156ae4c12e1d874bd780fcfb19503ff3f561086882
3
+ metadata.gz: aefb7d12a90cb72542348ae0e2d632d3f6567e128853aca59b281cb9ea146d56
4
+ data.tar.gz: 62bd776a8bdedf0addf0d4fd44c66896062f74db69acc9199aa0a01901f0b0a6
5
5
  SHA512:
6
- metadata.gz: 36a83aee0a65940ee65e0ee7fe238a6cbde339e58cef3f043664deadb28ef4fc3aecd3d6e17e7b30d94a585c8b279f3d919f31d8c06eda124d3027607c2f632d
7
- data.tar.gz: e47caa8e550e91fd9bc233669e0ea197ff5839367fbca90a9a9a711a8e9597be9f95b5c3f5425e6d6fc007f7721bf8bf81e9c7ab29295392a12f67dae9d10683
6
+ metadata.gz: b8a4aa7f5a8336a783d6f873a6c0a772024ee2189b3594b3a8a9e8ea91ab4e579371177c66e56ab96c01b25d0677c8b2b6b4e5659cf5ebe65cc3a513765bb41c
7
+ data.tar.gz: 19f6e05617376147e97a34fa6b6b1895c7d1f171cae460c33c7c3a4a977f84b6674dc3251b7a8128e3769ac848906014a7583c0ee391678b9fd4a5322d67ce18
@@ -2,5 +2,21 @@
2
2
  language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
- - 2.6.5
6
- before_install: gem install bundler -v 2.1.4
5
+ - 2.5.8
6
+ - 2.6.6
7
+ - 2.7.1
8
+ gemfile:
9
+ - gemfiles/ar52.gemfile
10
+ - gemfiles/ar60.gemfile
11
+ services:
12
+ - mysql
13
+ env:
14
+ - DATABASE_URL=mysql2://travis@localhost/sakila
15
+ before_install:
16
+ - gem install bundler -v 2.1.2
17
+ - curl -sSfL https://downloads.mysql.com/docs/sakila-db.tar.gz -o - | tar zxf -
18
+ - cd sakila-db
19
+ - mysql < sakila-schema.sql
20
+ - mysql < sakila-data.sql
21
+ script:
22
+ - bundle exec rake
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mysql_casual_explain (0.1.0)
4
+ mysql_casual_explain (1.0.0)
5
5
  activerecord
6
6
 
7
7
  GEM
@@ -2,32 +2,40 @@
2
2
 
3
3
  module MysqlCasualExplain
4
4
  module PrettyPrinter
5
- COLUMNS = %i[
6
- id
7
- select_type
8
- table
9
- type
10
- possible_keys
11
- key
12
- key_len
13
- ref
14
- rows
15
- extra
16
- ].freeze
17
-
18
5
  BOLD = ActiveSupport::LogSubscriber::BOLD
19
6
  RED = ActiveSupport::LogSubscriber::RED
20
7
  CLEAR = ActiveSupport::LogSubscriber::CLEAR
21
8
 
22
- def build_cells(items, widths)
23
- items, widths = _colorize_items(items, widths) if items.first != 'id'
24
- super(items, widths)
9
+ def pp(result, elapsed)
10
+ widths = compute_column_widths(result)
11
+ separator = build_separator(widths)
12
+
13
+ pp = []
14
+
15
+ pp << separator
16
+ pp << build_cells(result.columns, result.columns, widths)
17
+ pp << separator
18
+
19
+ result.rows.each do |row|
20
+ pp << build_cells(result.columns, row, widths)
21
+ end
22
+
23
+ pp << separator
24
+ pp << build_footer(result.rows.length, elapsed)
25
+
26
+ pp.join("\n") + "\n"
25
27
  end
26
28
 
27
29
  private
28
30
 
29
- def _colorize_items(items, widths)
30
- item_by_column = COLUMNS.zip(items).to_h
31
+ def build_cells(columns, items, widths)
32
+ items, widths = _colorize_items(columns, items, widths) if items.first != 'id'
33
+ super(items, widths)
34
+ end
35
+
36
+ def _colorize_items(columns, items, widths)
37
+ columns = columns.map(&:downcase).map(&:to_sym)
38
+ item_by_column = columns.zip(items).to_h
31
39
  warnings_by_column = MysqlCasualExplain.warnings_by_column
32
40
 
33
41
  new_items = []
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MysqlCasualExplain
4
- VERSION = '0.1.0'
4
+ VERSION = '1.0.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysql_casual_explain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel