Sha256: 651f28df9f66b540a02da49dbe6950ba2b4ef97900948976f20769041d90431c

Contents?: true

Size: 1.36 KB

Versions: 34

Compression:

Stored size: 1.36 KB

Contents

class MemoryModel < OpenStruct

  @@db = {}
  @@types = {}

  def initialize(hash)
    @@types[self.class] ||= {}
    hash = resolve_types(symbolize_keys(hash))
    super(hash)
  end

  def id
    object_id
  end

  def type
    @table[:type]
  end

  def attributes
    @table
  end

  def update(hash)
    @table.merge!(resolve_types(symbolize_keys(hash)))
    self
  end

  def destroy
    self.class.all.delete_if { |b| b.id == id }
  end

  def self.find(id)
    all.find { |r| r.id == id.to_i }
  end

  def self.create(hash = {})
    all << new(hash)
    all[-1]
  end

  def self.all
    @@db[self] ||= []
    @@db[self]
  end
  
  def self.first
    all.first
  end

  def self.delete_all
    all.clear
  end

  def self.count
    all.size
  end

  def self.attribute(attribute, type)
    @@types[self] ||= {}
    @@types[self][attribute] = type
  end

private
 
  def resolve_types(hash)
    hash.each { |attribute, value|
      case @@types[self.class][attribute]
      when :integer
        hash[attribute] = value.to_i
      when :boolean
        if value == "true"
          hash[attribute] = true
        elsif value == "false"
          hash[attribute] = false
        elsif value != true && value != false
          hash[attribute] = nil
        end
      end
    }
    hash
  end

  def symbolize_keys(hash)
    h = {}
    hash.each { |k, v| h[k.to_sym] = v }
    h
  end

end

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
testbot-0.7.12 lib/server/memory_model.rb
testbot-0.7.11 lib/server/memory_model.rb
testbot-0.7.9 lib/server/memory_model.rb
testbot_instructure-0.7.9 lib/server/memory_model.rb
testbot_instructure-0.7.8 lib/server/memory_model.rb
testbot-0.7.8 lib/server/memory_model.rb
testbot-0.7.7 lib/server/memory_model.rb
testbot-0.7.6 lib/server/memory_model.rb
testbot-0.7.5 lib/server/memory_model.rb
testbot-0.7.3 lib/server/memory_model.rb
testbot-0.7.2 lib/server/memory_model.rb
testbot-0.7.1 lib/server/memory_model.rb
testbot-0.7.0 lib/server/memory_model.rb
testbot-0.6.9 lib/server/memory_model.rb
testbot-0.6.8 lib/server/memory_model.rb
testbot-0.6.7 lib/server/memory_model.rb
testbot-0.6.6 lib/server/memory_model.rb
testbot-0.6.5 lib/server/memory_model.rb
testbot-0.6.4 lib/server/memory_model.rb
testbot-0.6.3 lib/server/memory_model.rb