Criteria 1.0
···
============
Criteria is a module for abstracting queries to various data sets.
For instance, you might have a flat text file, or an array of Ruby
objects, or a SQL database, and wish to perform the same query on
any given source, without different versions of code for each.
This module was inspired by the work of flgr (on #ruby-talk) on
Junction, and the ENV.var work by h9k (also on #ruby-talk).
Here are some examples:
idx1 = SQLTable.new(“orders”)
q1 = (idx1.price > idx1.paid) & (idx1.duedate < Time.now.to_i)
q1.limit = 5
q1.order = :ASC
q1.order_by = idx1.name, idx1.age
puts q1.select
=> SELECT * FROM orders WHERE ((orders.price > orders.paid) AND
(orders.duedate < 1062616643)) LIMIT 5 ORDER BY orders.name,
orders.age ASC
The generic Table superclass with the same query:
idx2 = Table.new
q2 = (idx2.price > idx2.paid) & (idx2.duedate < Time.now.to_i)
puts q2.inspect
puts q1.inspect
=> (& (> :price :paid) (< :duedate 1062616719))
=> (& (> :price :paid) (< :duedate 1062616719))
The very simple ‘mysql’ table included works like SQLTable, except
it actually returns a MysqlRes for immediate use. There are other
included table types as well.
You can find Criteria at the following location:
http://mephle.org/Criteria/
–
Ryan Pavlik rpav@mephle.com