Module | Sequel::Postgres::EnumDatabaseMethods |
In: |
lib/sequel/extensions/pg_enum.rb
|
Methods enabling Database object integration with enum types.
Parse the available enum values when loading this extension into your database.
# File lib/sequel/extensions/pg_enum.rb, line 65 65: def self.extended(db) 66: db.send(:parse_enum_labels) 67: end
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. |
# File lib/sequel/extensions/pg_enum.rb, line 74 74: def add_enum_value(enum, value, opts=OPTS) 75: sql = String.new 76: sql << "ALTER TYPE #{quote_schema_table(enum)} ADD VALUE#{' IF NOT EXISTS' if opts[:if_not_exists]} #{literal(value.to_s)}" 77: if v = opts[:before] 78: sql << " BEFORE #{literal(v.to_s)}" 79: elsif v = opts[:after] 80: sql << " AFTER #{literal(v.to_s)}" 81: end 82: run sql 83: parse_enum_labels 84: nil 85: end
Run the SQL to create an enum type with the given name and values.
# File lib/sequel/extensions/pg_enum.rb, line 88 88: def create_enum(enum, values) 89: sql = "CREATE TYPE #{quote_schema_table(enum)} AS ENUM (#{values.map{|v| literal(v.to_s)}.join(', ')})" 90: run sql 91: parse_enum_labels 92: nil 93: end
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 |
# File lib/sequel/extensions/pg_enum.rb, line 99 99: def drop_enum(enum, opts=OPTS) 100: sql = "DROP TYPE#{' IF EXISTS' if opts[:if_exists]} #{quote_schema_table(enum)}#{' CASCADE' if opts[:cascade]}" 101: run sql 102: parse_enum_labels 103: nil 104: end