Class: ROM::Relation::Name Private
- Inherits:
-
Object
- Object
- ROM::Relation::Name
- Defined in:
- core/lib/rom/relation/name.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Relation name container
This is a simple struct with two fields. It handles both relation registration name (i.e. Symbol) and dataset name. The reason we need it is a simplification of passing around these two objects. It is quite common to have a dataset named differently from a relation built on top if you are dealing with a legacy DB and often you need both to support things such as associations (rom-sql as an example).
Instance Attribute Summary collapse
- #aliaz ⇒ Object readonly private
-
#dataset ⇒ Symbol
readonly
private
Underlying dataset name.
- #key ⇒ Object readonly private
-
#relation ⇒ Symbol
readonly
private
Relation registration name.
Class Method Summary collapse
-
.[](*args) ⇒ ROM::Relation::Name
private
Coerce an object to a Name instance.
- .cache ⇒ Object private
Instance Method Summary collapse
- #aliased? ⇒ Boolean private
- #as(aliaz) ⇒ Object private
-
#initialize(relation, dataset = relation, aliaz = nil) ⇒ Name
constructor
private
A new instance of Name.
-
#inspect ⇒ String
private
Return inspected relation.
-
#to_s ⇒ String
private
Return relation name.
-
#to_sym ⇒ Symbol
private
Alias for registration key implicitly called by ROM::Registry.
Constructor Details
#initialize(relation, dataset = relation, aliaz = nil) ⇒ Name
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Name.
61 62 63 64 65 66 |
# File 'core/lib/rom/relation/name.rb', line 61 def initialize(relation, dataset = relation, aliaz = nil) @relation = relation @dataset = dataset || relation @key = aliaz || relation @aliaz = aliaz end |
Instance Attribute Details
#aliaz ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
56 57 58 |
# File 'core/lib/rom/relation/name.rb', line 56 def aliaz @aliaz end |
#dataset ⇒ Symbol (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Underlying dataset name
54 55 56 |
# File 'core/lib/rom/relation/name.rb', line 54 def dataset @dataset end |
#key ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
58 59 60 |
# File 'core/lib/rom/relation/name.rb', line 58 def key @key end |
#relation ⇒ Symbol (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Relation registration name
47 48 49 |
# File 'core/lib/rom/relation/name.rb', line 47 def relation @relation end |
Class Method Details
.[](*args) ⇒ ROM::Relation::Name
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Coerce an object to a Name instance
25 26 27 28 29 30 31 32 33 34 35 |
# File 'core/lib/rom/relation/name.rb', line 25 def self.[](*args) cache.fetch_or_store(args.hash) do relation, dataset, aliaz = args if relation.is_a?(Name) relation else new(relation, dataset, aliaz) end end end |
.cache ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
38 39 40 |
# File 'core/lib/rom/relation/name.rb', line 38 def self.cache @cache ||= Concurrent::Map.new end |
Instance Method Details
#aliased? ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
74 75 76 |
# File 'core/lib/rom/relation/name.rb', line 74 def aliased? aliaz && aliaz != relation end |
#as(aliaz) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
69 70 71 |
# File 'core/lib/rom/relation/name.rb', line 69 def as(aliaz) self.class[relation, dataset, aliaz] end |
#inspect ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return inspected relation
107 108 109 |
# File 'core/lib/rom/relation/name.rb', line 107 def inspect "#{self.class.name}(#{self})" end |
#to_s ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return relation name
83 84 85 86 87 88 89 90 91 |
# File 'core/lib/rom/relation/name.rb', line 83 def to_s if aliased? "#{relation} on #{dataset} as #{aliaz}" elsif relation == dataset relation.to_s else "#{relation} on #{dataset}" end end |
#to_sym ⇒ Symbol
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Alias for registration key implicitly called by ROM::Registry
98 99 100 |
# File 'core/lib/rom/relation/name.rb', line 98 def to_sym relation end |