Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Axiom Memory adapter
Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
config
lib
spec
.gitignore
.rspec
.rubocop.yml
.ruby-gemset
.travis.yml
.yardopts
CONTRIBUTING.md
Gemfile
Gemfile.devtools
Guardfile
LICENSE
README.md
Rakefile
TODO
axiom-memory-adapter.gemspec

README.md

axiom-memory-adapter

Use Axiom relations with an in-memory datastore

Gem Version Build Status Dependency Status Code Climate Coverage Status

Examples

require 'axiom-memory-adapter'

adapter = Axiom::Adapter::Memory.new(
  customers: Axiom::Relation.new([[:id, Integer], [:name, String]]),
  orders:    Axiom::Relation.new([[:id, Integer], [:customer_id, Integer]])
)

# Insert customer data
customers = adapter[:customers]
customers.insert([[1, 'Dan Kubb']])
customers.insert([[2, 'John Doe']])

# Insert order data
orders = adapter[:orders]
orders.insert([[1, 1]])
orders.insert([[2, 1]])
orders.insert([[3, 1]])
orders.insert([[4, 2]])

# Join customers and orders
customer_orders = customers.
  rename(id: :customer_id).
  join(orders.rename(id: :order_id))

# Demonstrate writable view-like behaviour

# Insert into the join
customer_orders.insert([[3, 'Jane Doe', 5]])

# Inserts are propagated to the base relations
customers.count  # => 3
orders.count     # => 5

# Delete from a join
customer_orders.delete([[3, 'Jane Doe', 5]])

# Deletes are propagated to the base relations
customers.count  # => 2
orders.count     # => 4

Contributing

See CONTRIBUTING.md for details.

Copyright

Copyright © 2013 Dan Kubb. See LICENSE for details.

Something went wrong with that request. Please try again.