Sha256: ae0b2d6294699aa3ff3da5c17ed7205ae7f5282cdf9267c02371642269bd4cc5

Contents?: true

Size: 1022 Bytes

Versions: 1

Compression:

Stored size: 1022 Bytes

Contents

module Vienna
  class << self
    attr_accessor :adapter
  end

  # An adapter is responsible for fetching and saving records from
  # some endpoint. This base class acts as an interface which subclasses
  # should develop. Adapters can be set on a per-model basis, or as an
  # adapter for all models. Example adapter subclasses are RESTAdapter
  # and LocalAdapter. A fixtures adapter is also provided for testing
  # purposes.
  class Adapter
    def find(record, id, &block)
      implement "find"
    end

    def load(record, id, &block)
      implement "load"
    end

    def create_record(record)
      implement "create_record"
    end

    def update_record(record)
      implement "update_record"
    end

    def save_record(record)
      implement "save_record"
    end

    def delete_record(record)
      implement "delete_record"
    end

    def fetch
      implement "fetch"
    end

    def implement(method)
      raise NoMethodError, "Adapter subclass should implement `#{method}'"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
opal-vienna-0.7.0 opal/vienna/adapters/base.rb