# File lib/dm-core/collection.rb, line 52 def get(*key) key = model.typecast_key(key) if loaded? # find indexed resource (create index first if it does not exist) each {|r| @cache[r.key] = r } if @cache.empty? @cache[key] elsif query.limit || query.offset > 0 # current query is exclusive, find resource within the set # TODO: use a subquery to retrieve the collection and then match # it up against the key. This will require some changes to # how subqueries are generated, since the key may be a # composite key. In the case of DO adapters, it means subselects # like the form "(a, b) IN(SELECT a,b FROM ...)", which will # require making it so the Query condition key can be a # Property or an Array of Property objects # use the brute force approach until subquery lookups work lazy_load get(*key) else # current query is all inclusive, lookup using normal approach first(model.to_query(repository, key)) end end