Module: Sequel::Extension::PgComment::CreateTableGeneratorMethods
- Includes:
- Sequel::Extension::PgComment
- Defined in:
- lib/sequel/extensions/pg_comment/create_table_generator_methods.rb
Overview
:nodoc:
Enhancements to the standard schema modification methods in a
block-form create_table
method, to support setting comments via the
:comment
option.
Instance Attribute Summary collapse
-
#comments ⇒ Array<SqlGenerator>
readonly
An array of all the comments that this generator has seen fit to create.
Instance Method Summary collapse
-
#column(*args) ⇒ Object
Enhanced version of the
column
table definition method, which supports setting a comment on the column. -
#composite_foreign_key(columns, opts) ⇒ Object
Enhanced version of the
composite_foreign_key
table definition method, which supports setting a comment on the FK constraint. -
#composite_primary_key(columns, *args) ⇒ Object
Enhanced version of the
composite_primary_key
table definition method, which supports setting a comment on the primary key index. -
#constraint(name, *args, &block) ⇒ Object
Enhanced version of the
constraint
table definition method, which supports setting a comment on the constraint. -
#index(columns, opts = OPTS) ⇒ Object
Enhanced version of the
index
table definition method, which supports setting a comment on the index. -
#primary_key(name, *args) ⇒ Object
Enhanced version of the
primary_key
table definition method, which supports setting a comment on either the column or constraint. -
#unique(columns, opts = OPTS) ⇒ Object
Enhanced version of the
unique
table definition method, which supports setting a comment on the unique index.
Instance Attribute Details
#comments ⇒ Array<SqlGenerator> (readonly)
An array of all the comments that this generator has seen fit to create.
12 13 14 |
# File 'lib/sequel/extensions/pg_comment/create_table_generator_methods.rb', line 12 def comments @comments end |
Instance Method Details
#column(*args) ⇒ Object
Enhanced version of the column
table definition method, which
supports setting a comment on the column.
22 23 24 25 26 27 28 |
# File 'lib/sequel/extensions/pg_comment/create_table_generator_methods.rb', line 22 def column(*args) super if args.last.is_a?(Hash) && args.last[:comment] comments << SqlGenerator.create(:column, args.first, args.last[:comment]) end end |
#composite_foreign_key(columns, opts) ⇒ Object
Enhanced version of the composite_foreign_key
table definition method,
which supports setting a comment on the FK constraint.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/sequel/extensions/pg_comment/create_table_generator_methods.rb', line 77 def composite_foreign_key(columns, opts) if opts.is_a?(Hash) and opts[:comment] and opts[:table] if opts[:name] comments << SqlGenerator.create( :constraint, opts[:name], opts[:comment] ) else comments << SqlGenerator.create( :constraint, "#{opts[:table]}_#{columns.first}_fkey".to_sym, opts[:comment] ) end end super end |
#composite_primary_key(columns, *args) ⇒ Object
Enhanced version of the composite_primary_key
table definition method,
which supports setting a comment on the primary key index.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/sequel/extensions/pg_comment/create_table_generator_methods.rb', line 56 def composite_primary_key(columns, *args) if args.last.is_a?(Hash) and args.last[:comment] if args.last[:name] comments << SqlGenerator.create( :index, args.last[:name], args.last[:comment] ) else comments << PrefixSqlGenerator.new(:index, :_pkey, args.last[:comment]) end end super end |
#constraint(name, *args, &block) ⇒ Object
Enhanced version of the constraint
table definition method,
which supports setting a comment on the constraint.
147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/sequel/extensions/pg_comment/create_table_generator_methods.rb', line 147 def constraint(name, *args, &block) opts = name.is_a?(Hash) ? name : (args.last.is_a?(Hash) ? args.last : {}) if opts[:comment] if name comments << SqlGenerator.create(:constraint, name, opts[:comment]) else raise RuntimeError, "Setting comments on unnamed or check constraints is not supported" end end end |
#index(columns, opts = OPTS) ⇒ Object
Enhanced version of the index
table definition method,
which supports setting a comment on the index.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/sequel/extensions/pg_comment/create_table_generator_methods.rb', line 103 def index(columns, opts = OPTS) if opts[:comment] if opts[:name] comments << SqlGenerator.create(:index, opts[:name], opts[:comment]) else comments << PrefixSqlGenerator.new( :index, ("_" + [columns].flatten.map(&:to_s).join('_') + "_index").to_sym, opts[:comment] ) end end super end |
#primary_key(name, *args) ⇒ Object
Enhanced version of the primary_key
table definition method, which
supports setting a comment on either the column or constraint.
If the primary key is composite (name
is an array), then the comment
will be placed on the index. Otherwise, the comment will be set
on the column itself.
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/sequel/extensions/pg_comment/create_table_generator_methods.rb', line 40 def primary_key(name, *args) if args.last.is_a?(Hash) && args.last[:comment] and !name.is_a? Array # The composite primary key case will be handled by the # `composite_primary_key` method, so we don't have to deal with it # here. comments << SqlGenerator.create(:column, name, args.last[:comment]) end super end |
#unique(columns, opts = OPTS) ⇒ Object
Enhanced version of the unique
table definition method,
which supports setting a comment on the unique index.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/sequel/extensions/pg_comment/create_table_generator_methods.rb', line 125 def unique(columns, opts = OPTS) if opts[:comment] if opts[:name] comments << SqlGenerator.create(:index, opts[:name], opts[:comment]) else comments << PrefixSqlGenerator.new( :index, ("_" + [columns].flatten.map(&:to_s).join('_') + "_key").to_sym, opts[:comment] ) end end super end |