YqlQuery ======== A simple [YQL query](http://developer.yahoo.com/yql/guide/index.html) generation library written in ruby, providing a chainable query builder capable of generating the most complex query conditions you can throw at it. ## Installation (sudo) gem install yql-query ## Documentation [http://rdoc.info/gems/yql-query](http://rdoc.info/gems/yql-query) Usage ----- yql-query's primary interface is the Builder class. Once you've instantiated a builder, you can pretty much generate whatever query you'd like using it. builder = YqlQuery::Builder.new builder.table('music.artists') to generate a query, the Builder class provides a number of methods to construct it's arguments: builder.table('music.artists') builder.select('name, genre') builder.conditions("bands = 'false'") builder.sort('age') conditions are also aliased as 'where': #using 'where' builder.where("bands = 'true'") # is the same thing as builder.conditions("bands = 'true'") conditions can be passed as either a string, an array or builder.conditions(["name = 'Erykah Badu'", "release_year > '2005'"]) methods can be chained together: builder.table('music.artists').select('name').where("genre = 'jazz'") to generate the query, just call to_s or to_query: builder.to_s # => 'select * from tablename...' builder.to_query # => 'select * from tablename...' passing a hash with a Builder instance to creates sub-select: guid_query = Builder.new.table('users').select('guid').where("role = 'admin'") builder = Builder.new.table('actions).where(:guid => guid_query) builder.to_s # => "select * from actions where guid in (select guid from users where role = 'admin')" The full list of methods available: table('music.albums') use('http://somedomain.com/table.xml', 'othersource') select('name') conditions("genre = 'jazz'") sort('albumName') sort_descending('albumName') limit(5) offset(10) tail(5) truncate(10) unique('format') sanitize('description') remote(10, 30) # remote limits and offsets Refer to the [documentation](http://rdoc.info/gems/yql-query) for complete usage and more examples. ## Build Status [![Build Status](https://secure.travis-ci.org/spagalloco/yql-query.png?branch=master)][travis] [travis]: http://travis-ci.org/spagalloco/yql-query ## Dependency Status [![Dependency Status](https://gemnasium.com/spagalloco/yql-query.png?travis)][gemnasium] [gemnasium]: https://gemnasium.com/spagalloco/yql-query ## Contributing * Fork the project. * Make your feature addition or bug fix. * Add tests for it. This is important so I don't break it in a future version unintentionally. * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull) * Send me a pull request. Bonus points for topic branches. ## Copyright Copyright (c) 2011 Steve Agalloco. See [LICENSE](https://github.com/spagalloco/yql-query/blob/master/LICENSE.md) for details.