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