Sha256: bcb75387f3942401e2d466172a8fcf6ba93d3abc6224f1908be9b6423b3417b2

Contents?: true

Size: 1.69 KB

Versions: 3

Compression:

Stored size: 1.69 KB

Contents

module Zertico
  module Service
    def all
      instance_variable_set("@#{interface_name.pluralize}", resource_source.all)
    end

    def build
      instance_variable_set("@#{interface_name}", resource_source.new)
    end

    def find
      instance_variable_set("@#{interface_name}", resource_source.find(params[interface_id.to_sym]))
    end

    def generate
      instance_variable_set("@#{interface_name}", resource_source.create(params[interface_name.to_sym]))
    end

    def modify
      find
      instance_variable_get("@#{interface_name}").update_attributes(params[interface_name.to_sym])
      instance_variable_get("@#{interface_name}")
    end

    def delete
      find
      instance_variable_get("@#{interface_name}").destroy
      instance_variable_get("@#{interface_name}")
    end

    def resource_source
      @resource_source ||= interface_class
    end

    def resource_source=(resource_chain = [])
      @resource_source = resource_chain.shift
      @resource_source = @resource_source.constantize if @resource_source.respond_to?(:constantize)
      resource_chain.each do |resource|
        @resource_source = @resource_source.send(resource)
      end
    end

    protected

    def interface_id
      begin
        return "#{interface_name}_id" if self.class.name.chomp('Controller').split('::').size > 1
      rescue NameError
        'id'
      end
      'id'
    end

    def interface_name
      self.interface_class.name.singularize.underscore
    end

    def interface_class
      begin
        self.class.name.chomp('Controller').singularize.constantize
      rescue NameError
        self.class.name.chomp('Controller').split('::').last.singularize.constantize
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
zertico-1.3.0 lib/zertico/service.rb
zertico-1.2.0 lib/zertico/service.rb
zertico-1.1.1 lib/zertico/service.rb