Sha256: 9c3d038edb143fcebe6b5045b651392e959e6fe207583208b9a7ee7932a4afbd

Contents?: true

Size: 832 Bytes

Versions: 2

Compression:

Stored size: 832 Bytes

Contents

module Ecoportal
  module API
    module Common
      class BaseModel
        attr_reader :doc
        def initialize(doc = {})
          @doc          = doc
          @original_doc = JSON.parse(doc.to_json)
        end

        def print
          puts JSON.pretty_generate(as_json)
          self
        end

        def as_json
          doc
        end

        def as_update
          new_doc = as_json
          Common::HashDiff.diff(new_doc, @original_doc)
        end

        def self.passthrough(*methods, to:)
          methods.each do |method|
            method = method.to_s
            define_method method do
              send(to)[method]
            end
            define_method "#{method}=" do |value|
              send(to)[method] = value
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ecoportal-api-0.1.1 lib/ecoportal/api/common/base_model.rb
ecoportal-api-0.1.0 lib/ecoportal/api/common/base_model.rb