Sha256: 8bd0a7ac9bd5eea2abba627164deac142e04f729c3fecfe7a615d7c7bbb613b3
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
require_relative 'where_filter' require_relative 'load_all' require_relative 'indexed_cache' 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
moysklad-0.3.0 | lib/moysklad/resources/indexed.rb |