mysql_casual_explain 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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