Sha256: fd89ef8c5123395a30eb6ba4ee9e391e5f294223b2b03cf971d46c073ab5c9d7

Contents?: true

Size: 1.22 KB

Versions: 3

Compression:

Stored size: 1.22 KB

Contents

module Fauna
  class ClassSettings < Fauna::Resource; end

  class Class < Fauna::Model
    class << self
      def inherited(base)
        fc = name.split("::").last.underscore
        Fauna.add_class(fc, base) unless Fauna.exists_class_for_name?(fc)
      end

      def ref
        fauna_class_name
      end

      def data
        Fauna::Resource.find(fauna_class_name).data
      end

      def update_data!(hash = {})
        meta = Fauna::Resource.find(fauna_class_name)
        block_given? ? yield(meta.data) : meta.data = hash
        meta.save!
      end

      def update_data(hash = {})
        meta = Fauna::Resource.find(fauna_class_name)
        block_given? ? yield(meta.data) : meta.data = hash
        meta.save
      end

      def __class_name__
        @__class_name__ ||= begin
          raise MissingMigration, "Class #{name} has not been added to Fauna.schema." if !fauna_class_name
          fauna_class_name[8..-1]
        end
      end

      def find_by_external_id(external_id)
        find_by("instances", :external_id => external_id, :class => __class_name__).first
      end
    end

    private

    def post
      Fauna::Client.post("instances", struct.merge("class" => self.class.__class_name__))
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fauna-0.1.2 lib/fauna/model/class.rb
fauna-0.1.1 lib/fauna/model/class.rb
fauna-0.1 lib/fauna/model/class.rb