Skip to content

Instantly share code, notes, and snippets.

@solnic
Created December 13, 2014 00:23
Show Gist options
  • Save solnic/3c8a38b22840a9575587 to your computer and use it in GitHub Desktop.
Save solnic/3c8a38b22840a9575587 to your computer and use it in GitHub Desktop.
Completely useless Array adapter for ROM because why not
class ArrayAdapter < ROM::Adapter
def self.schemes
[:array]
end
def initialize(uri)
super
@connection = {}
end
def dataset(name, _header)
@connection[name] = []
end
def dataset?(name)
@connection.key?(name)
end
def [](name)
@connection.fetch(name)
end
def extend_relation_instance(relation)
relation.extend(Enumerable)
end
end
ROM::Adapter.register(ArrayAdapter)
rom = ROM.setup(default: 'array://test') do
schema do
base_relation(:users) do
repository :default
attribute :name
end
end
relation(:users) do
def by_name(name)
find_all { |user| user[:name] == name }
end
end
end
rom.schema.users << { name: 'Jane' }
puts rom.relations.users.by_name('Jane').first.inspect
# { :name => 'Jane' }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment