Class: RDBr::Metadata::ForeignKey

Inherits:
Data
  • Object
show all
Defined in:
lib/rdbr/metadata/keys.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(columns:, referenced_relation:, referenced_columns:, name: nil, referenced_namespace: nil, on_update: nil, on_delete: nil) ⇒ ForeignKey

Returns a new instance of ForeignKey.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rdbr/metadata/keys.rb', line 25

def initialize(
  columns:,
  referenced_relation:,
  referenced_columns:,
  name: nil,
  referenced_namespace: nil,
  on_update: nil,
  on_delete: nil
)
  local_columns = Values.names(columns, field: 'foreign key columns')
  remote_columns = Values.names(referenced_columns, field: 'referenced columns')
  if local_columns.length != remote_columns.length
    raise InvalidMetadataError, 'foreign key column counts must match'
  end

  super(
    name: Values.optional_name(name, field: 'foreign key name'),
    columns: local_columns,
    referenced_namespace: Values.optional_name(referenced_namespace, field: 'referenced namespace'),
    referenced_relation: Values.name(referenced_relation, field: 'referenced relation'),
    referenced_columns: remote_columns,
    on_update: Values.deep_copy_freeze(on_update),
    on_delete: Values.deep_copy_freeze(on_delete)
  )
end

Instance Attribute Details

#columnsObject (readonly)

Returns the value of attribute columns

Returns:

  • (Object)

    the current value of columns



16
17
18
# File 'lib/rdbr/metadata/keys.rb', line 16

def columns
  @columns
end

#nameObject (readonly)

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



16
17
18
# File 'lib/rdbr/metadata/keys.rb', line 16

def name
  @name
end

#on_deleteObject (readonly)

Returns the value of attribute on_delete

Returns:

  • (Object)

    the current value of on_delete



16
17
18
# File 'lib/rdbr/metadata/keys.rb', line 16

def on_delete
  @on_delete
end

#on_updateObject (readonly)

Returns the value of attribute on_update

Returns:

  • (Object)

    the current value of on_update



16
17
18
# File 'lib/rdbr/metadata/keys.rb', line 16

def on_update
  @on_update
end

#referenced_columnsObject (readonly)

Returns the value of attribute referenced_columns

Returns:

  • (Object)

    the current value of referenced_columns



16
17
18
# File 'lib/rdbr/metadata/keys.rb', line 16

def referenced_columns
  @referenced_columns
end

#referenced_namespaceObject (readonly)

Returns the value of attribute referenced_namespace

Returns:

  • (Object)

    the current value of referenced_namespace



16
17
18
# File 'lib/rdbr/metadata/keys.rb', line 16

def referenced_namespace
  @referenced_namespace
end

#referenced_relationObject (readonly)

Returns the value of attribute referenced_relation

Returns:

  • (Object)

    the current value of referenced_relation



16
17
18
# File 'lib/rdbr/metadata/keys.rb', line 16

def referenced_relation
  @referenced_relation
end

Instance Method Details

#composite?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/rdbr/metadata/keys.rb', line 51

def composite?
  columns.length > 1
end