module AwesomePrint::DbSchema
Public Class Methods
included(base)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 9 def self.included(base) base.send :alias_method, :cast_without_dbschema, :cast base.send :alias_method, :cast, :cast_with_dbschema end
Public Instance Methods
cast_with_dbschema(object, type)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 14 def cast_with_dbschema(object, type) case object when ::DbSchema::Operations::CreateTable :dbschema_create_table when ::DbSchema::Operations::DropTable :dbschema_drop_table when ::DbSchema::Operations::AlterTable :dbschema_alter_table when ::DbSchema::Operations::CreateColumn :dbschema_create_column when ::DbSchema::Operations::ColumnOperation :dbschema_column_operation when ::DbSchema::Operations::RenameOperation :dbschema_rename when ::DbSchema::Operations::AlterColumnType :dbschema_alter_column_type when ::DbSchema::Operations::AlterColumnDefault :dbschema_alter_column_default when ::DbSchema::Operations::CreateIndex :dbschema_create_index when ::DbSchema::Operations::DropIndex :dbschema_drop_index when ::DbSchema::Operations::CreateCheckConstraint :dbschema_create_check_constraint when ::DbSchema::Operations::CreateForeignKey :dbschema_create_foreign_key when ::DbSchema::Operations::DropForeignKey :dbschema_drop_foreign_key when ::DbSchema::Operations::CreateEnum :dbschema_create_enum when ::DbSchema::Operations::AlterEnumValues :dbschema_alter_enum_values when ::DbSchema::Operations::CreateExtension :dbschema_create_extension else cast_without_dbschema(object, type) end end
Private Instance Methods
awesome_dbschema_alter_column_default(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 92 def awesome_dbschema_alter_column_default(object) new_default = if object.new_default.is_a?(Symbol) colorize(object.new_default.to_s, :string) else object.new_default.ai end "#<DbSchema::Operations::AlterColumnDefault #{object.name.ai}, #{new_default}>" end
awesome_dbschema_alter_column_type(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 83 def awesome_dbschema_alter_column_type(object) attributes = object.new_attributes.map do |k, v| key = colorize("#{k}:", :symbol) "#{key} #{v.ai}" end.unshift(nil).join(', ') "#<DbSchema::Operations::AlterColumnType #{object.name.ai}, #{object.new_type.ai}#{attributes}>" end
awesome_dbschema_alter_enum_values(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 145 def awesome_dbschema_alter_enum_values(object) values = object.new_values.map do |value| colorize(value.to_s, :string) end.join(', ') "#<DbSchema::Operations::AlterEnumValues #{object.enum_name.ai} to (#{values})>" end
awesome_dbschema_alter_table(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 67 def awesome_dbschema_alter_table(object) "#<DbSchema::Operations::AlterTable #{object.table_name.ai} #{indent_lines(object.changes.ai)}>" end
awesome_dbschema_column_operation(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 141 def awesome_dbschema_column_operation(object) "#<#{object.class} #{object.name.ai}>" end
awesome_dbschema_create_check_constraint(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 121 def awesome_dbschema_create_check_constraint(object) "#<#{object.class} #{object.check.name.ai} #{object.check.condition.ai}>" end
awesome_dbschema_create_column(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 71 def awesome_dbschema_create_column(object) "#<DbSchema::Operations::CreateColumn #{object.field.ai}>" end
awesome_dbschema_create_enum(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 133 def awesome_dbschema_create_enum(object) values = object.enum.values.map do |value| colorize(value.to_s, :string) end.join(', ') "#<#{object.class} #{object.enum.name.ai} (#{values})>" end
awesome_dbschema_create_extension(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 153 def awesome_dbschema_create_extension(object) "#<#{object.class} #{object.extension.name.ai}>" end
awesome_dbschema_create_foreign_key(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 125 def awesome_dbschema_create_foreign_key(object) "#<DbSchema::Operations::CreateForeignKey #{object.foreign_key.ai} on #{object.table_name.ai}>" end
awesome_dbschema_create_index(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 102 def awesome_dbschema_create_index(object) columns = format_dbschema_fields(object.index.columns) using = ' using ' + colorize(object.index.type.to_s, :symbol) unless object.index.btree? data = [nil] data << colorize('primary key', :nilclass) if object.index.primary? data << colorize('unique', :nilclass) if object.index.unique? data << colorize('condition: ', :symbol) + object.index.condition.ai unless object.index.condition.nil? "#<#{object.class} #{object.index.name.ai} on #{columns}#{using}#{data.join(', ')}>" end
awesome_dbschema_create_table(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 54 def awesome_dbschema_create_table(object) data = ["fields: #{object.table.fields.ai}"] data << "indexes: #{object.table.indexes.ai}" if object.table.indexes.any? data << "checks: #{object.table.checks.ai}" if object.table.checks.any? data_string = indent_lines(data.join(', ')) "#<DbSchema::Operations::CreateTable #{object.table.name.ai} #{data_string}>" end
awesome_dbschema_drop_column(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 75 def awesome_dbschema_drop_column(object) "#<DbSchema::Operations::DropColumn #{object.name.ai}>" end
awesome_dbschema_drop_foreign_key(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 129 def awesome_dbschema_drop_foreign_key(object) "#<DbSchema::Operations::DropForeignKey #{object.fkey_name.ai} on #{object.table_name.ai}>" end
awesome_dbschema_drop_index(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 114 def awesome_dbschema_drop_index(object) data = [object.name.ai] data << colorize('primary key', :nilclass) if object.primary? "#<#{object.class} #{data.join(' ')}>" end
awesome_dbschema_drop_table(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 63 def awesome_dbschema_drop_table(object) "#<DbSchema::Operations::DropTable #{object.name.ai}>" end
awesome_dbschema_rename(object)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 79 def awesome_dbschema_rename(object) "#<#{object.class} #{object.old_name.ai} => #{object.new_name.ai}>" end
format_dbschema_fields(fields)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 157 def format_dbschema_fields(fields) if fields.one? fields.first.ai else '[' + fields.map(&:ai).join(', ') + ']' end end
indent_lines(text, indent_level = 4)
click to toggle source
# File lib/db_schema/awesome_print.rb, line 165 def indent_lines(text, indent_level = 4) text.gsub(/(?<!\A)^/, ' ' * indent_level) end