Class: Sequel::Schema::AlterTableGenerator
- Defined in:
- lib/sequel_core/schema/generator.rb
Overview
The Schema::AlterTableGenerator creates DDL operations on existing tables, such as adding/removing/modifying columns/indexes/constraints.
Instance Attribute Summary collapse
-
#operations ⇒ Object
readonly
An array of DDL operations to perform.
Instance Method Summary collapse
-
#add_column(name, type, opts = {}) ⇒ Object
Add a column with the given name, type, and opts to the DDL for the table.
-
#add_constraint(name, *args, &block) ⇒ Object
Add a constraint with the given name and args to the DDL for the table.
-
#add_foreign_key(name, table, opts = {}) ⇒ Object
Add a foreign key with the given name and referencing the given table to the DDL for the table.
-
#add_full_text_index(columns, opts = {}) ⇒ Object
Add a full text index on the given columns to the DDL for the table.
-
#add_index(columns, opts = {}) ⇒ Object
Add an index on the given columns to the DDL for the table.
-
#add_primary_key(name, opts = {}) ⇒ Object
Add a primary key to the DDL for the table.
-
#add_spatial_index(columns, opts = {}) ⇒ Object
Add a spatial index on the given columns to the DDL for the table.
-
#drop_column(name) ⇒ Object
Remove a column from the DDL for the table.
-
#drop_constraint(name) ⇒ Object
Remove a constraint from the DDL for the table.
-
#drop_index(columns) ⇒ Object
Remove an index from the DDL for the table.
-
#initialize(db, &block) ⇒ AlterTableGenerator
constructor
Set the Database object to which to apply the DDL, and evaluate the block in the context of this object.
-
#rename_column(name, new_name, opts = {}) ⇒ Object
Modify a column’s name in the DDL for the table.
-
#set_column_default(name, default) ⇒ Object
Modify a column’s default value in the DDL for the table.
-
#set_column_type(name, type) ⇒ Object
Modify a column’s type in the DDL for the table.
Constructor Details
#initialize(db, &block) ⇒ AlterTableGenerator
Set the Database object to which to apply the DDL, and evaluate the block in the context of this object.
157 158 159 160 161 |
# File 'lib/sequel_core/schema/generator.rb', line 157 def initialize(db, &block) @db = db @operations = [] instance_eval(&block) if block end |
Instance Attribute Details
#operations ⇒ Object (readonly)
An array of DDL operations to perform
153 154 155 |
# File 'lib/sequel_core/schema/generator.rb', line 153 def operations @operations end |
Instance Method Details
#add_column(name, type, opts = {}) ⇒ Object
Add a column with the given name, type, and opts to the DDL for the table. See Generator#column for the available options.
165 166 167 |
# File 'lib/sequel_core/schema/generator.rb', line 165 def add_column(name, type, opts = {}) @operations << {:op => :add_column, :name => name, :type => type}.merge(opts) end |
#add_constraint(name, *args, &block) ⇒ Object
Add a constraint with the given name and args to the DDL for the table. See Generator#constraint.
171 172 173 174 |
# File 'lib/sequel_core/schema/generator.rb', line 171 def add_constraint(name, *args, &block) @operations << {:op => :add_constraint, :name => name, :type => :check, \ :check => block || args} end |
#add_foreign_key(name, table, opts = {}) ⇒ Object
Add a foreign key with the given name and referencing the given table to the DDL for the table. See Generator#column for the available options.
178 179 180 |
# File 'lib/sequel_core/schema/generator.rb', line 178 def add_foreign_key(name, table, opts = {}) add_column(name, :integer, {:table=>table}.merge(opts)) end |
#add_full_text_index(columns, opts = {}) ⇒ Object
Add a full text index on the given columns to the DDL for the table. See Generator#index for available options.
184 185 186 |
# File 'lib/sequel_core/schema/generator.rb', line 184 def add_full_text_index(columns, opts = {}) add_index(columns, {:type=>:full_text}.merge(opts)) end |
#add_index(columns, opts = {}) ⇒ Object
Add an index on the given columns to the DDL for the table. See Generator#index for available options.
190 191 192 |
# File 'lib/sequel_core/schema/generator.rb', line 190 def add_index(columns, opts = {}) @operations << {:op => :add_index, :columns => Array(columns)}.merge(opts) end |
#add_primary_key(name, opts = {}) ⇒ Object
Add a primary key to the DDL for the table. See Generator#column for the available options.
196 197 198 199 |
# File 'lib/sequel_core/schema/generator.rb', line 196 def add_primary_key(name, opts = {}) opts = @db..merge(opts) add_column(name, opts.delete(:type), opts) end |
#add_spatial_index(columns, opts = {}) ⇒ Object
Add a spatial index on the given columns to the DDL for the table. See Generator#index for available options.
203 204 205 |
# File 'lib/sequel_core/schema/generator.rb', line 203 def add_spatial_index(columns, opts = {}) add_index(columns, {:type=>:spatial}.merge(opts)) end |
#drop_column(name) ⇒ Object
Remove a column from the DDL for the table.
208 209 210 |
# File 'lib/sequel_core/schema/generator.rb', line 208 def drop_column(name) @operations << {:op => :drop_column, :name => name} end |
#drop_constraint(name) ⇒ Object
Remove a constraint from the DDL for the table.
213 214 215 |
# File 'lib/sequel_core/schema/generator.rb', line 213 def drop_constraint(name) @operations << {:op => :drop_constraint, :name => name} end |
#drop_index(columns) ⇒ Object
Remove an index from the DDL for the table.
218 219 220 |
# File 'lib/sequel_core/schema/generator.rb', line 218 def drop_index(columns) @operations << {:op => :drop_index, :columns => Array(columns)} end |
#rename_column(name, new_name, opts = {}) ⇒ Object
Modify a column’s name in the DDL for the table.
223 224 225 |
# File 'lib/sequel_core/schema/generator.rb', line 223 def rename_column(name, new_name, opts = {}) @operations << {:op => :rename_column, :name => name, :new_name => new_name}.merge(opts) end |
#set_column_default(name, default) ⇒ Object
Modify a column’s default value in the DDL for the table.
228 229 230 |
# File 'lib/sequel_core/schema/generator.rb', line 228 def set_column_default(name, default) @operations << {:op => :set_column_default, :name => name, :default => default} end |
#set_column_type(name, type) ⇒ Object
Modify a column’s type in the DDL for the table.
233 234 235 |
# File 'lib/sequel_core/schema/generator.rb', line 233 def set_column_type(name, type) @operations << {:op => :set_column_type, :name => name, :type => type} end |