Cassandra Object provides a nice API for working with Cassandra. CassandraObjects are mostly duck-type compatible with ActiveRecord objects so most of your controller code should work ok. Note that they're mostly compatible, Cassandra has no support for dynamic queries, or sorting. So the following kinds of operations aren't supported and never will be.
:order
:conditions
:joins
:group
There isn't much in the way of documentation yet, but a few examples.
class Customer < CassandraObject::Base
attribute :first_name, :type => :string
attribute :last_name, :type => :string
attribute :date_of_birth, :type => :date
attribute :signed_up_at, :type => :time_with_zone
validate :should_be_cool
key :uuid
index :date_of_birth
association :invoices, :unique=>false, :inverse_of=>:customer
private
def should_be_cool
unless ["Michael", "Anika", "Evan", "James"].include?(first_name)
errors.add(:first_name, "must be that of a cool person")
end
end
end
class Invoice < CassandraObject::Base
attribute :number, :type=>:integer
attribute :total, :type=>:float
attribute :gst_number, :type=>:string
# indexes can have a single entry also.
index :number, :unique=>true
# bi-directional associations with read-repair support.
association :customer, :unique=>true, :inverse_of=>:invoices
# Read migration support
migrate 1 do |attrs|
attrs["total"] ||= rand(2000) / 100.0
end
migrate 2 do |attrs|
attrs["gst_number"] = "66-666-666"
end
key :natural, :attributes => :number
end
@invoice = Invoice.get("12345")
@invoice.customer.invoices.all.include?(@invoice) # true
Read More :
0 comments:
Post a Comment