Class: MysqlFramework::Scripts::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/mysql_framework/scripts/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.descendantsObject



19
20
21
# File 'lib/mysql_framework/scripts/base.rb', line 19

def self.descendants
  ObjectSpace.each_object(Class).select { |klass| klass < self }
end

Instance Method Details

#apply(_client) ⇒ Object

Raises:

  • (NotImplementedError)


11
12
13
# File 'lib/mysql_framework/scripts/base.rb', line 11

def apply(_client)
  raise NotImplementedError
end

#column_exists?(client, table_name, column_name) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
40
41
42
43
# File 'lib/mysql_framework/scripts/base.rb', line 37

def column_exists?(client, table_name, column_name)
  result = client.query(<<~SQL)
    SHOW COLUMNS FROM #{table_name} WHERE Field="#{column_name}";
  SQL

  result.count == 1
end

#identifierObject

Raises:

  • (NotImplementedError)


6
7
8
9
# File 'lib/mysql_framework/scripts/base.rb', line 6

def identifier
  raise NotImplementedError if @identifier.nil?
  @identifier
end

#index_exists?(client, table_name, index_name) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
48
49
50
51
# File 'lib/mysql_framework/scripts/base.rb', line 45

def index_exists?(client, table_name, index_name)
  result = client.query(<<~SQL)
    SHOW INDEX FROM #{table_name} WHERE Key_name="#{index_name}";
  SQL

  result.count >= 1
end

#index_up_to_date?(client, table_name, index_name, columns) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/mysql_framework/scripts/base.rb', line 53

def index_up_to_date?(client, table_name, index_name, columns)
  result = client.query(<<~SQL)
    SHOW INDEX FROM #{table_name} WHERE Key_name="#{index_name}";
  SQL

  return false if result.size != columns.size

  index_columns = result.sort_by { |column| column[:Seq_in_index] }
  index_columns.each_with_index do |column, i|
    return false if column[:Column_name] != columns[i]
  end

  true
end

#rollback(_client) ⇒ Object

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/mysql_framework/scripts/base.rb', line 15

def rollback(_client)
  raise NotImplementedError
end

#tagsObject



23
24
25
# File 'lib/mysql_framework/scripts/base.rb', line 23

def tags
  []
end

#update_procedure(client, proc_name, proc_file) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/mysql_framework/scripts/base.rb', line 27

def update_procedure(client, proc_name, proc_file)
  client.query(<<~SQL)
    DROP PROCEDURE IF EXISTS #{proc_name};
  SQL

  proc_sql = File.read(proc_file)

  client.query(proc_sql)
end