Module: DynamicMigrations::ActiveRecord::Migrators::Enum

Included in:
DynamicMigrations::ActiveRecord::Migrators
Defined in:
lib/dynamic_migrations/active_record/migrators/enum.rb

Instance Method Summary collapse

Instance Method Details

#add_enum_values(enum_name, values) ⇒ Object

add vaues to a given enum



14
15
16
17
18
19
# File 'lib/dynamic_migrations/active_record/migrators/enum.rb', line 14

def add_enum_values enum_name, values
  sqls = values.map do |value|
    "ALTER TYPE #{schema_name}.#{enum_name} ADD ATTRIBUTE '#{value}';"
  end
  execute sqls.join("\n")
end

#create_enum(enum_name, values) ⇒ Object

create a postgres enum



6
7
8
9
10
11
# File 'lib/dynamic_migrations/active_record/migrators/enum.rb', line 6

def create_enum enum_name, values
  # schema_name was not provided to this method, it comes from the migration class
  execute <<~SQL
    CREATE TYPE #{schema_name}.#{enum_name} as ENUM ('#{values.join("','")}');
  SQL
end

#drop_enum(enum_name) ⇒ Object

remove a enum from the schema



22
23
24
25
26
# File 'lib/dynamic_migrations/active_record/migrators/enum.rb', line 22

def drop_enum enum_name
  execute <<~SQL
    DROP TYPE #{schema_name}.#{enum_name};
  SQL
end

#remove_enum_comment(enum_name) ⇒ Object

remove the comment from a enum



36
37
38
39
40
# File 'lib/dynamic_migrations/active_record/migrators/enum.rb', line 36

def remove_enum_comment enum_name
  execute <<~SQL
    COMMENT ON TYPE #{schema_name}.#{enum_name} IS null;
  SQL
end

#set_enum_comment(enum_name, comment) ⇒ Object

add a comment to a enum



29
30
31
32
33
# File 'lib/dynamic_migrations/active_record/migrators/enum.rb', line 29

def set_enum_comment enum_name, comment
  execute <<~SQL
    COMMENT ON TYPE #{schema_name}.#{enum_name} IS #{quote comment};
  SQL
end