Sha256: 2277d658e1bdd9b9d6e405d06dc5ac2ca1be21f54d10ebb9c8b861fb426118a9

Contents?: true

Size: 1.5 KB

Versions: 16

Compression:

Stored size: 1.5 KB

Contents

class DefaultAdapter
  class << self
    def all(klass)
      klass.persistence_class.all
    end

    def delete(klass, id)
      object = klass.persistence_class.where(id: id).first
      object.delete if object
    end

    def delete_all(klass)
      klass.persistence_class.delete_all
    end

    def exists?(klass, id)
      klass.persistence_class.exists?(id)
    end

    def find(klass, id)
      id = normalize_id(id) if id

      klass.persistence_class.find(id)
    end

    def first(klass)
      klass.persistence_class.first
    end

    def last(klass)
      klass.persistence_class.last
    end

    def create(klass, attributes)
      object = klass.persistence_class.create(attributes)
    end

    def update_attribute(klass, id, key, value)
      object = id.nil? ? klass.persistence_class.new(key.to_sym => value) : klass.persistence_class.find(id)

      ret = object.update_attribute(key, value)

      [ret, object]
    end

    def update_attributes(klass, id, attributes)
      object = id.nil? ? klass.persistence_class.new : klass.persistence_class.find(id)

      ret = object.update_attributes(attributes)

      [ret, object]
    end

    def where(klass, query)
      klass.persistence_class.where(query.to_sql)
    end

  private
    def normalize_id(args)
      return args if args.is_a?(Array)
      
      id = (args.is_a?(Hash) ? args[:id] : args)

      convertable?(id) ? id.to_i : id
    end

    def convertable?(id)
      id.respond_to?(:to_i) && id.to_s == id.to_i.to_s
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
active_repository-0.5.1 lib/active_repository/adapters/default_adapter.rb
active_repository-0.5.0 lib/active_repository/adapters/default_adapter.rb
active_repository-0.4.3 lib/active_repository/adapters/default_adapter.rb
active_repository-0.4.2 lib/active_repository/adapters/default_adapter.rb
active_repository-0.4.1 lib/active_repository/adapters/default_adapter.rb
active_repository-0.4.0 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.10 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.9 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.8 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.7 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.6 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.5 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.4 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.3 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.2 lib/active_repository/adapters/default_adapter.rb
active_repository-0.3.1 lib/active_repository/adapters/default_adapter.rb