Sha256: f181acd6a6e326852c970037842f5774273a8b73cf847ca34c7fc4ca3e70afed
Contents?: true
Size: 1.71 KB
Versions: 4
Compression:
Stored size: 1.71 KB
Contents
require 'dry/equalizer' require 'rom/relation/name' require 'dry/core/cache' module ROM module SQL class Association class Name include Dry::Equalizer.new(:relation_name, :key) extend Dry::Core::Cache attr_reader :relation_name attr_reader :key alias_method :to_sym, :key def self.[](*args) fetch_or_store(args) do rel, ds, aliaz = args if rel.is_a?(ROM::Relation::Name) new(rel, rel.dataset) elsif rel.is_a?(self) rel elsif aliaz new(ROM::Relation::Name[rel, ds], aliaz) elsif ds.nil? new(ROM::Relation::Name[rel], rel) else new(ROM::Relation::Name[rel, ds], ds) end end end def initialize(relation_name, aliaz) @relation_name = relation_name @aliased = relation_name.dataset != aliaz @key = aliased? ? aliaz : relation_name.dataset end def aliased? @aliased end def inspect if aliased? "#{self.class}(#{relation_name.to_s} as #{key})" else "#{self.class}(#{relation_name.to_s})" end end alias_method :to_s, :inspect def dataset relation_name.dataset end def relation relation_name.relation end def as(aliaz) Name[relation_name.relation, relation_name.dataset, aliaz] end def to_sym dataset end def sql_literal(ds) ds.literal(aliased? ? Sequel[dataset] : Sequel.as(dataset, key)) end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
rom-sql-1.3.5 | lib/rom/sql/association/name.rb |
rom-sql-1.3.4 | lib/rom/sql/association/name.rb |
rom-sql-1.3.3 | lib/rom/sql/association/name.rb |
rom-sql-1.3.2 | lib/rom/sql/association/name.rb |