Sha256: 91ca6136e7d777bb759b2d738bfdd924833f580a8078720fbff391440b5436ae
Contents?: true
Size: 1.28 KB
Versions: 1
Compression:
Stored size: 1.28 KB
Contents
require "google/cloud" module GdatastoreMapper module Scoping def where condition return nil unless condition.is_a?(Hash) entities = dataset_run(where_query condition) end def find id return nil unless id.is_a?(Fixnum) query = Google::Cloud::Datastore::Key.new self.to_s, id.to_i entities = GdatastoreMapper::Session.dataset.lookup query from_entity entities.first if entities.any? end def find_by condition return nil unless condition.is_a?(Hash) where(condition)&.first end def order condition return nil unless condition.is_a?(Hash) dataset_run(order_query condition) end private def where_query condition query = Google::Cloud::Datastore::Query.new query.kind self.to_s condition.each do |property, value| query.where(property.to_s, '=', value) end query end def order_query condition query = Google::Cloud::Datastore::Query.new query.kind self.to_s condition.each do |property, value| query.order(property.to_s, value) end query end def dataset_run query entities = GdatastoreMapper::Session.dataset.run query entities.map do |entity| from_entity entity end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gdatastore_mapper-0.1.1 | lib/gdatastore_mapper/scoping.rb |