module Mongoid::Oslc::ClassMethods
Public Instance Methods
describe(describe)
click to toggle source
# File lib/mongoid/oslc.rb, line 38 def describe(describe) Mongoid::Oslc.resources[self.name].merge!(describe: describe) end
domain(name)
click to toggle source
# File lib/mongoid/oslc.rb, line 34 def domain(name) Mongoid::Oslc.resources[self.name].merge!(domain: name) end
oslc_embeds_many(name, options = {})
click to toggle source
# File lib/mongoid/oslc.rb, line 48 def oslc_embeds_many(name, options = {}) oslc_options = options_for_oslc(options) embeds_many(name, options) embedded_class = relations[name.to_s].class_name.constantize register_oslc_field(name, oslc_options.merge(type: Array, embedded: embedded_class)) end
oslc_field(name, options = {})
click to toggle source
# File lib/mongoid/oslc.rb, line 42 def oslc_field(name, options = {}) oslc_options = options_for_oslc(options) field(name, options) register_oslc_field(name, oslc_options) end
oslc_fields()
click to toggle source
# File lib/mongoid/oslc.rb, line 55 def oslc_fields (ancestors - included_modules).inject({}) do |hash, ancestor_class| hash.merge(Mongoid::Oslc.resources[ancestor_class.name][:fields]) end end
oslc_where(query)
click to toggle source
# File lib/mongoid/oslc.rb, line 61 def oslc_where(query) mongoid_query = Strategy.to_query(query) where(mongoid_query) end
register_oslc_field(name, options)
click to toggle source
# File lib/mongoid/oslc.rb, line 66 def register_oslc_field(name, options) Mongoid::Oslc.resources[self.name][:fields][options[:mapping]] = { name: name, value_type: ::Oslc::VALUE_TYPES[options[:value_type] || fields[name.to_s].type.to_s], read_only: (options[:read_only] || false), occurs: occurs(options), allowed_values: (options[:allowed_values] || []), embedded: (options[:embedded] || false), range: (options[:range] || []) } end
Private Instance Methods
occurs(options)
click to toggle source
# File lib/mongoid/oslc.rb, line 80 def occurs(options) mandatory = options[:mandatory] || false case when mandatory && options[:type] == Array then ::Oslc::ONE_OR_MANY when mandatory then ::Oslc::EXACTLY_ONE when options[:type] == Array then ::Oslc::ZERO_OR_MANY else ::Oslc::ZERO_OR_ONE end end
options_for_oslc(options)
click to toggle source
# File lib/mongoid/oslc.rb, line 90 def options_for_oslc(options) [:value_type, :read_only, :allowed_values, :mapping, :mandatory, :range].inject({}) do |hash, field| hash.merge(field => options.delete(field)) end.reject{|field, value| value.nil?}.merge(type: options[:type]) end