Module: GlobalUid::MigrationExtension

Defined in:
lib/global_uid/migration_extension.rb

Instance Method Summary collapse

Instance Method Details

#create_table(name, options = {}, &blk) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/global_uid/migration_extension.rb', line 5

def create_table(name, options = {}, &blk)
  uid_enabled = !(GlobalUid::Base.global_uid_options[:disabled] || options[:use_global_uid] == false)

  # rules for stripping out auto_increment -- enabled, not dry-run, and not a "PK-less" table
  remove_auto_increment = uid_enabled && !GlobalUid::Base.global_uid_options[:dry_run] && !(options[:id] == false)

  if remove_auto_increment
    old_id_option = options[:id]
    options.merge!(:id => false)
  end

  super(name, options) { |t|
    if remove_auto_increment
      # need to honor specifically named tables
      id_column_name = (old_id_option || :id)
      t.column id_column_name, "int(10) NOT NULL PRIMARY KEY"
    end
    blk.call(t) if blk
  }

  if uid_enabled
    id_table_name = options[:global_uid_table] || GlobalUid::Base.id_table_from_name(name)
    GlobalUid::Base.create_uid_tables(id_table_name, options)
  end

end

#drop_table(name, options = {}) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/global_uid/migration_extension.rb', line 32

def drop_table(name, options = {})
  if !GlobalUid::Base.global_uid_options[:disabled] && options[:use_global_uid] == true
    id_table_name = options[:global_uid_table] || GlobalUid::Base.id_table_from_name(name)
    GlobalUid::Base.drop_uid_tables(id_table_name,options)
  end
  super(name, options)
end