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
- 
  
    
      .extended(db)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Parse the available enum values when loading this extension into your database. 
Instance Method Summary collapse
- 
  
    
      #add_enum_value(enum, value, opts = OPTS)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Run the SQL to add the given value to the existing enum type. 
- 
  
    
      #create_enum(enum, values)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Run the SQL to create an enum type with the given name and values. 
- 
  
    
      #drop_enum(enum, opts = OPTS)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Run the SQL to drop the enum type with the given name. 
- 
  
    
      #rename_enum(enum, new_name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Run the SQL to rename the enum type with the given name to the another given name. 
- 
  
    
      #rename_enum_value(enum, old_name, new_name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Run the SQL to rename the enum value with the given name to the another given name. 
Class Method Details
.extended(db) ⇒ Object
Parse the available enum values when loading this extension into your database.
| 78 79 80 81 82 83 | # File 'lib/sequel/extensions/pg_enum.rb', line 78 def self.extended(db) db.instance_exec do @enum_labels = {} parse_enum_labels end 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. 
| 90 91 92 93 94 95 96 97 98 99 | # File 'lib/sequel/extensions/pg_enum.rb', line 90 def add_enum_value(enum, value, opts=OPTS) sql = String.new 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 _process_enum_change_sql(sql) end | 
#create_enum(enum, values) ⇒ Object
Run the SQL to create an enum type with the given name and values.
| 102 103 104 | # File 'lib/sequel/extensions/pg_enum.rb', line 102 def create_enum(enum, values) _process_enum_change_sql("CREATE TYPE #{quote_schema_table(enum)} AS ENUM (#{values.map{|v| literal(v.to_s)}.join(', ')})") 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 
| 122 123 124 | # File 'lib/sequel/extensions/pg_enum.rb', line 122 def drop_enum(enum, opts=OPTS) _process_enum_change_sql("DROP TYPE#{' IF EXISTS' if opts[:if_exists]} #{quote_schema_table(enum)}#{' CASCADE' if opts[:cascade]}") end | 
#rename_enum(enum, new_name) ⇒ Object
Run the SQL to rename the enum type with the given name to the another given name.
| 108 109 110 | # File 'lib/sequel/extensions/pg_enum.rb', line 108 def rename_enum(enum, new_name) _process_enum_change_sql("ALTER TYPE #{quote_schema_table(enum)} RENAME TO #{quote_schema_table(new_name)}") end | 
#rename_enum_value(enum, old_name, new_name) ⇒ Object
Run the SQL to rename the enum value with the given name to the another given name.
| 114 115 116 | # File 'lib/sequel/extensions/pg_enum.rb', line 114 def rename_enum_value(enum, old_name, new_name) _process_enum_change_sql("ALTER TYPE #{quote_schema_table(enum)} RENAME VALUE #{literal(old_name.to_s)} TO #{literal(new_name.to_s)}") end |