Module: Sequel::Postgres::EnumDatabaseMethods

Defined in:
lib/sequel/extensions/pg_enum.rb

Overview

Methods enabling Database object integration with enum types.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(db) ⇒ Object

Parse the available enum values when loading this extension into your database.



61
62
63
# File 'lib/sequel/extensions/pg_enum.rb', line 61

def self.extended(db)
  db.send(:parse_enum_labels)
end

Instance Method Details

#add_enum_value(enum, value, opts = OPTS) ⇒ Object

Run the SQL to add the given value to the existing enum type. Options:

:after

Add the new value after this existing value.

:before

Add the new value before this existing value.

:if_not_exists

Do not raise an error if the value already exists in the enum.



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/sequel/extensions/pg_enum.rb', line 70

def add_enum_value(enum, value, opts=OPTS)
  sql = "ALTER TYPE #{quote_schema_table(enum)} ADD VALUE#{' IF NOT EXISTS' if opts[:if_not_exists]} #{literal(value.to_s)}"
  if v = opts[:before]
    sql << " BEFORE #{literal(v.to_s)}"
  elsif v = opts[:after]
    sql << " AFTER #{literal(v.to_s)}"
  end
  run sql
  parse_enum_labels
  nil
end

#create_enum(enum, values) ⇒ Object

Run the SQL to create an enum type with the given name and values.



83
84
85
86
87
88
# File 'lib/sequel/extensions/pg_enum.rb', line 83

def create_enum(enum, values)
  sql = "CREATE TYPE #{quote_schema_table(enum)} AS ENUM (#{values.map{|v| literal(v.to_s)}.join(', ')})"
  run sql
  parse_enum_labels
  nil
end

#drop_enum(enum, opts = OPTS) ⇒ Object

Run the SQL to drop the enum type with the given name. Options:

:if_exists

Do not raise an error if the enum type does not exist

:cascade

Also drop other objects that depend on the enum type



94
95
96
97
98
99
# File 'lib/sequel/extensions/pg_enum.rb', line 94

def drop_enum(enum, opts=OPTS)
  sql = "DROP TYPE#{' IF EXISTS' if opts[:if_exists]} #{quote_schema_table(enum)}#{' CASCADE' if opts[:cascade]}"
  run sql
  parse_enum_labels
  nil
end