Sha256: 71cf901d988e3120e3c6fb18d17cc05a2ec4b50b5d3f74aa27ca9fe886cdced7
Contents?: true
Size: 1.66 KB
Versions: 14
Compression:
Stored size: 1.66 KB
Contents
module Moysklad::Resources class Indexed < SimpleDelegator WrongEntriesCountError = Class.new StandardError NoIdInEntity = Class.new StandardError include WhereFilter include LoadAll include IndexedCache def initialize resource raise TypeError, 'resource должен быть Moysklad::Resources::Base' unless resource.is_a? Moysklad::Resources::Base super resource end # Автоматически подгружает постранично данныез из API и возвращает их все сразу. # # @return [Array of Moysklad::Entities::Base] def all(params = {}) cache_fetch do pull_list(params) end end # Возвращает запрашивемую запись из кеша. # Предварительно подгружает все записи через метод `all` # # @return Moyskald::Entities::Base def find id index[id] end # Перечень id-ов всех элементов в ресуресе # # @return [Array of uuids] def uuids index.keys end # Неиндексированный ресурс # # @return Moysklad::Resources::Base def resource __getobj__ end private def values index.values end def index pull_list unless cached_index cached_index end def pull_list(params={}) load_all(params) end def prepare_index list i={} list.each do |r| raise NoIdInEntity, "У объекта нет id: #{r}" unless r.respond_to?(:id) && r.id i[r.id]=r end return i end end end
Version data entries
14 entries across 14 versions & 1 rubygems