lib/ridgepole/dsl_parser.rb in ridgepole-0.6.5.beta vs lib/ridgepole/dsl_parser.rb in ridgepole-0.6.5.beta2

- old
+ new

@@ -17,11 +17,11 @@ :options => options, } end TYPES = [ - # https://github.com/winebarrel/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L274 + # https://github.com/rails/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L274 :string, :text, :integer, :bigint, :float, @@ -31,11 +31,11 @@ :time, :date, :binary, :boolean, - # https://github.com/winebarrel/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L79 + # https://github.com/rails/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L79 :daterange, :numrange, :tsrange, :tstzrange, :int4range, @@ -56,14 +56,49 @@ :citext, :point, :bit, :bit_varying, :money, - ] + ].uniq TYPES.each do |column_type| define_method column_type do |*args| options = args.extract_options! + column_names = args + column_names.each {|name| column(name, column_type, options) } + end + end + + ALIAS_TYPES = { + # https://github.com/rails/rails/blob/v5.0.0.rc1/activerecord/lib/active_record/connection_adapters/mysql/schema_definitions.rb + tinyblob: [:blob, {limit: 255}], + mediumblob: [:binary, {limit: 16777215}], + longblob: [:binary, {limit: 4294967295}], + tinytext: [:text, {limit: 255}], + mediumtext: [:text, {limit: 16777215}], + longtext: [:text, {limit: 4294967295}], + unsigned_integer: [:integer, {unsigned: true}], + unsigned_bigint: [:bigint, {unsigned: true}], + unsigned_float: [:float, {limit: 24, unsigned: true}], + unsigned_decimal: [:decimal, {precision: 10, unsigned: true}], + } + + # XXX: + def blob(*args) + options = args.extract_options! + options = {limit: 65535}.merge(options) + column_names = args + + column_names.each do |name| + column_type = (0..0xff).include?(options[:limit]) ? :blob : :binary + column(name, column_type, options) + end + end + + ALIAS_TYPES.each do |alias_type, (column_type, default_options)| + define_method alias_type do |*args| + options = args.extract_options! + options = default_options.merge(options) column_names = args column_names.each {|name| column(name, column_type, options) } end end