Class: Localtower::Generators::ServiceObjects::InsertIndexes

Inherits:
Object
  • Object
show all
Defined in:
lib/localtower/generators/service_objects/insert_indexes.rb

Constant Summary collapse

USING =
[
  'none',
  'default',
  'gin',
  'gist',
].freeze
UNIQUE =
[
  false,
  true,
]
ALGO =
[
  'default',
  'concurrently',
]

Instance Method Summary collapse

Constructor Details

#initialize(attributes) ⇒ InsertIndexes

Returns a new instance of InsertIndexes.



22
23
24
# File 'lib/localtower/generators/service_objects/insert_indexes.rb', line 22

def initialize(attributes)
  @attributes = attributes
end

Instance Method Details

#callObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/localtower/generators/service_objects/insert_indexes.rb', line 26

def call
  attributes.each do |attribute|
    attribute.each do |attr_key, options|
      line_str_original = File.read(Localtower::Tools.last_migration).match(/((.*)add_index :(.*), :#{attr_key})/)[0]
      line_str = line_str_original.clone

      line_str = inser_using(line_str, options)
      line_str = inser_unique(line_str, options)
      line_str = inser_algorithm(line_str, options)

      content = File.read(Localtower::Tools.last_migration).gsub(line_str_original, line_str)
      content = add_disable_ddl_transaction(content, options)

      File.write(Localtower::Tools.last_migration, content)
    end
  end
end