lib/ddc/service_builder.rb in ddc-0.0.1 vs lib/ddc/service_builder.rb in ddc-0.1.0

- old
+ new

@@ -1,30 +1,39 @@ module DDC class ServiceBuilder def self.build(model_type) - Class.new do - include ResponseBuilder + Class.new do + include DDC::ResponseBuilder class << self - attr_accessor :model_type, :ar_model + attr_accessor :model_type, :ar_model, :finder end @model_type = model_type ar_class_name = model_type.to_s.camelize @ar_model = Object.const_get(ar_class_name) + @finder = nil + begin + @finder = Object.const_get("#{ar_class_name}Finder") + rescue NameError + # we use the AR Model as a fallback + end + def find(context) - id = context.values_at :id - me = self.class.ar_model.where id: id + id = context[:id] + me = custom_finder ? custom_finder.find(context) : + ar_model.where(id: id) if me.present? ok(me) else not_found end end - def find_all(context) - mes = self.class.ar_model.all + def find_all(context={}) + mes = custom_finder ? custom_finder.find_all(context) : + ar_model.all ok(mes) end def update(context) id, updates = context.values_at :id, self.class.model_type @@ -43,12 +52,17 @@ me = self.class.ar_model.create attributes created(me) end private - def find_for_user(user, id) - return nil if id.nil? || !UUIDUtil.valid?(id) + def custom_finder + self.class.finder end + + def ar_model + self.class.ar_model + end + end end end end