module Rein::Type::Enum

This module contains methods for defining enum types.

Public Instance Methods

add_enum_value(enum_name, new_value) click to toggle source
# File lib/rein/type/enum.rb, line 23
def add_enum_value(enum_name, new_value)
  execute("ALTER TYPE #{enum_name} ADD VALUE #{quote(new_value)}")
end
create_enum_type(*args) click to toggle source
# File lib/rein/type/enum.rb, line 9
def create_enum_type(*args)
  reversible do |dir|
    dir.up { _create_enum_type(*args) }
    dir.down { _drop_enum_type(*args) }
  end
end
drop_enum_type(*args) click to toggle source
# File lib/rein/type/enum.rb, line 16
def drop_enum_type(*args)
  reversible do |dir|
    dir.up { _drop_enum_type(*args) }
    dir.down { _create_enum_type(*args) }
  end
end

Private Instance Methods

_create_enum_type(enum_name, enum_values = []) click to toggle source
# File lib/rein/type/enum.rb, line 29
def _create_enum_type(enum_name, enum_values = [])
  enum_values = enum_values.map { |value| quote(value) }.join(', ')
  execute("CREATE TYPE #{enum_name} AS ENUM (#{enum_values})")
end
_drop_enum_type(enum_name, *) click to toggle source
# File lib/rein/type/enum.rb, line 34
def _drop_enum_type(enum_name, *)
  execute("DROP TYPE #{enum_name}")
end