Class: Miasma::Types::Collection
- Inherits:
-
Object
- Object
- Miasma::Types::Collection
- Includes:
- Utils::Memoization
- Defined in:
- lib/miasma/types/collection.rb
Overview
Base collection
Direct Known Subclasses
Models::AutoScale::Groups, Models::Compute::Servers, Models::LoadBalancer::Balancers, Models::Orchestration::Stack::Events, Models::Orchestration::Stack::Resources, Models::Orchestration::Stacks, Models::Storage::Buckets, Models::Storage::Files
Instance Attribute Summary (collapse)
-
- (Miasma::Api) api
readonly
Underlying service API.
Instance Method Summary (collapse)
- - (Object) _memo included from Utils::Memoization
- - (Array<Model>) all
-
- (Model) build(args = {})
Build a new model.
-
- (TrueClass) clear_memoizations!
included
from Utils::Memoization
Remove all memoized values.
-
- (Array<Model>) filter(args = {})
Return models matching given filter.
-
- (self) from_json(json)
Load collection via JSON.
-
- (Model, NilClass) get(ident)
Return model with given name or ID.
-
- (Collection) initialize(api)
constructor
A new instance of Collection.
-
- (Object) memoize(key, direct = false) { ... }
included
from Utils::Memoization
Memoize data.
-
- (Miasma::Types::Model) model
Model class within collection.
-
- (self) reload
Reload the collection.
-
- (String) to_json(*_)
Collection of models.
-
- (NilClass) unmemoize(key, direct = false)
included
from Utils::Memoization
Remove memoized value.
Constructor Details
- (Collection) initialize(api)
Returns a new instance of Collection
14 15 16 17 |
# File 'lib/miasma/types/collection.rb', line 14 def initialize(api) @api = api @collection = nil end |
Instance Attribute Details
- (Miasma::Api) api (readonly)
Returns underlying service API
12 13 14 |
# File 'lib/miasma/types/collection.rb', line 12 def api @api end |
Instance Method Details
- (Object) _memo Originally defined in module Utils::Memoization
- (Array<Model>) all
20 21 22 23 24 |
# File 'lib/miasma/types/collection.rb', line 20 def all memoize(:collection) do perform_population end end |
- (Model) build(args = {})
Build a new model
61 62 63 64 65 66 67 68 |
# File 'lib/miasma/types/collection.rb', line 61 def build(args={}) instance = self.model.new(self.api) args.each do |m_name, m_value| m_name = "#{m_name}=" instance.send(m_name, m_value) end instance end |
- (TrueClass) clear_memoizations! Originally defined in module Utils::Memoization
Remove all memoized values
- (Array<Model>) filter(args = {})
need to add helper to deep sort args, convert to string and hash to use as memoization key
Return models matching given filter
50 51 52 53 54 55 |
# File 'lib/miasma/types/collection.rb', line 50 def filter(args={}) key = "filter_#{args.to_smash.checksum}" memoize(key) do perform_filter(args) end end |
- (self) from_json(json)
Load collection via JSON
79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/miasma/types/collection.rb', line 79 def from_json(json) loaded = MultiJson.load(json) unless(loaded.is_a?(Array)) raise TypeError.new "Expecting type `Array` but received `#{loaded.class}`" end unmemoize(:collection) memoize(:collection) do loaded.map do |item| model.from_json(self.api, MultiJson.dump(item)) end end self end |
- (Model, NilClass) get(ident)
Return model with given name or ID
38 39 40 41 42 |
# File 'lib/miasma/types/collection.rb', line 38 def get(ident) memoize(ident) do perform_get(ident) end end |
- (Object) memoize(key, direct = false) { ... } Originally defined in module Utils::Memoization
Memoize data
- (Miasma::Types::Model) model
Returns model class within collection
94 95 96 |
# File 'lib/miasma/types/collection.rb', line 94 def model raise NotImplementedError end |
- (self) reload
Reload the collection
29 30 31 32 |
# File 'lib/miasma/types/collection.rb', line 29 def reload clear_memoizations! self end |
- (String) to_json(*_)
Returns collection of models
71 72 73 |
# File 'lib/miasma/types/collection.rb', line 71 def to_json(*_) self.all.to_json end |
- (NilClass) unmemoize(key, direct = false) Originally defined in module Utils::Memoization
Remove memoized value