Relation is is a Relational Algebra made in C language.
- I want to learn C language and how create Wrappers to other languages, like Ruby and Python! (and this is a better way to do it! I think)
In order to create:
SELECT * FROM users
you create a Table object:
users = Relation::Table('users')
users.select('*').to_sql
=> "SELECT * FROM users"
Using where operator:
users.select('name').where("name = 'tomas'").to_sql
=> "SELECT name FROM users WHERE name = 'tomas'"
Using LIMIT
or OFFSET
:
users.select('*').limit(10).to_sql
=> "SELECT * FROM users LIMIT 10"
users.select('*').offset(10).to_sql
=> "SELECT * FROM users OFFSET 10"
Using ORDER BY
as #order
:
users.select('*').order('name')
=> "SELECT * FROM users ORDER BY name"
Using GROUP BY
as #group
(like Arel):
users.select('*').group('name')
=> "SELECT * FROM users GROUP BY name"
Using HAVING
as #having
:
users.select('name').group('name').having('age = 21').to_sql
=> "SELECT name FROM users GROUP BY name HAVING age = 21"
Some LITTLE benchmarking about the actual results:
https://gist.github.com/705274
Just type in the root folder:
rake test
- Don't forget about testing! =-)