Class: SchemaFerry::Core::TableConverter

Inherits:
Object
  • Object
show all
Includes:
IdentifierShortenable, Support::Warnings
Defined in:
lib/schema_ferry/core/table_converter.rb

Constant Summary collapse

UNSUPPORTED_INDEX_TYPES =
%i[fulltext spatial].freeze
SPATIAL_SQL_TYPES =
/\A(?:geometry|point|linestring|polygon|multipoint|multilinestring|multipolygon|
geometrycollection)\z/ix

Constants included from IdentifierShortenable

IdentifierShortenable::HASH_LENGTH, IdentifierShortenable::MAX_BYTES

Instance Method Summary collapse

Methods included from IdentifierShortenable

#shorten_identifier

Constructor Details

#initialize(raw, rule:, foreign_keys:, fk_columns:, column_converter:, enum_check:) ⇒ TableConverter

Returns a new instance of TableConverter.



13
14
15
16
17
18
19
20
21
# File 'lib/schema_ferry/core/table_converter.rb', line 13

def initialize(raw, rule:, foreign_keys:, fk_columns:, column_converter:, enum_check:)
  @raw              = raw
  @name             = raw[:name]
  @rule             = rule
  @foreign_keys     = foreign_keys
  @fk_columns       = fk_columns
  @column_converter = column_converter
  @enum_check       = enum_check
end

Instance Method Details

#convertObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/schema_ferry/core/table_converter.rb', line 23

def convert
  check_table_name_length!

  TableSchema.new(
    name:              @name,
    primary_key:       @raw[:primary_key],
    pk_type:           convert_pk_type,
    pk_limit:          convert_pk_limit,
    comment:           @raw[:comment].presence,
    columns:           convert_columns,
    indexes:           convert_indexes,
    foreign_keys:      convert_foreign_keys,
    check_constraints: build_check_constraints
  )
end