mysql_framework 2.1.5 → 2.1.7

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: 4e1cae192a6864318bec19e54ce0bc4db409f393493884dd7455be0809ac8bc0
4
- data.tar.gz: d8ab5dfaf00a88efc3addb04e66c84bc8a614a9f827651a4b37581a3a71936f3
3
+ metadata.gz: d7cfae16762fc02981eed438b941a6eddbf69df7f24d7d7a6c390604064518da
4
+ data.tar.gz: aba1911d97941727399a9bd815df8453b276761c736ced329298f8c18b65f69e
5
5
  SHA512:
6
- metadata.gz: 97152eedd702ad53bc27655e47eab758cd53f1e01fc756f493ebfba8e8bb618a99307c7c717d40ea4aaf331c8c5d16d5ec45dc3dc4fc36391beec50dad8a1cbe
7
- data.tar.gz: 555e02b1f2f0a6eabb07a07a4651c39f7c1d400b843f2e21a3e6ee8e3268d4319e682c7702d0e5a2fe12ffd0e8b344ff8ab5b39adfbd7d1c60c150d385ba4fc6
6
+ metadata.gz: ee9ad256b44ed8ec1db8b9039a72324d3045d5e5b2063c88d64605f63c3bf089d4da383cb1ebece12027dea5a20a7d98734e90192874ce2340244286cea2a0fc
7
+ data.tar.gz: 5d867a1db81ccb22887246584ee8020a934e88f11bc5f434ff07e5a1100c89601d13e151406b9c924073a46c72ca3d26b82a4965a1bb02c846cd3239bfc66ebc
@@ -50,6 +50,21 @@ module MysqlFramework
50
50
  result.count >= 1
51
51
  end
52
52
 
53
+ def index_up_to_date?(client, table_name, index_name, columns)
54
+ result = client.query(<<~SQL)
55
+ SHOW INDEX FROM #{table_name} WHERE Key_name="#{index_name}";
56
+ SQL
57
+
58
+ return false if result.size != columns.size
59
+
60
+ index_columns = result.sort_by { |column| column[:Seq_in_index] }
61
+ index_columns.each_with_index do |column, i|
62
+ return false if column[:Column_name] != columns[i]
63
+ end
64
+
65
+ true
66
+ end
67
+
53
68
  protected
54
69
 
55
70
  def generate_partition_sql
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MysqlFramework
4
- VERSION = '2.1.5'
4
+ VERSION = '2.1.7'
5
5
  end
@@ -86,4 +86,28 @@ describe MysqlFramework::Scripts::Base do
86
86
  expect(subject.index_exists?(client,'foo','bar')).to eq(false)
87
87
  end
88
88
  end
89
+
90
+ describe '#index_up_to_date?' do
91
+ before do
92
+ expect(client).to receive(:query).and_return(
93
+ [{ Column_name: 'b', Seq_in_index: 2 }, { Column_name: 'a', Seq_in_index: 1 }]
94
+ )
95
+ end
96
+
97
+ it 'returns true when index is up to date' do
98
+ expect(subject.index_up_to_date?(client, 'foo', 'bar', ['a', 'b'])).to eq(true)
99
+ end
100
+
101
+ it 'returns false when index is missing a column' do
102
+ expect(subject.index_up_to_date?(client, 'foo', 'bar', ['a', 'b', 'c'])).to eq(false)
103
+ end
104
+
105
+ it 'returns false when index is having too many columns' do
106
+ expect(subject.index_up_to_date?(client, 'foo', 'bar', ['a'])).to eq(false)
107
+ end
108
+
109
+ it 'returns false when index has columns in wrong order' do
110
+ expect(subject.index_up_to_date?(client, 'foo', 'bar', ['b', 'a'])).to eq(false)
111
+ end
112
+ end
89
113
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysql_framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.5
4
+ version: 2.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-21 00:00:00.000000000 Z
11
+ date: 2023-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake