README.md in lite-query-1.1.2 vs README.md in lite-query-1.2.0

- old
+ new

@@ -27,77 +27,75 @@ * [Setup](#setup) * [Usage](#usage) ## Setup -### Generators +#### Generators -Use `rails g query NAME` will generate the following files: +`rails g query NAME` will generate the following file in your application root: ```erb -app/queries/[name]_query.rb +app/queries/[NAME]_query.rb ``` If a `ApplicationQuery` file in the `app/queries` directory is available, the generator will create file that inherit from `ApplicationQuery` if not it will fallback to `Lite::Query::Base`. -### Query +#### Query -You will need to fill this class with the required `execute` method as shown below: +You will need to fill this class with the required `call` method as shown below: ```ruby -class AgeQuery < ApplicationQuery +class AgeQuery < Lite::Query::Base - # NOTE: This instance method is required - def execute + def call return relation unless args[:age] relation.where('age > ?', args[:age]) end - private - - def default_relation - User.all - end - end ``` ## Usage There are multiple ways to access the query call: +#### Instance ```ruby relation = User.limit(1) +query = AgeQuery.new(relation, age: 10) +query.call #=> SELECT * FROM users WHERE age = 10 LIMIT 1 +``` -query = AgeQuery.new(relation) -query.call +#### Class +```ruby +AgeQuery.call(User, age: 20) #=> SELECT * FROM users WHERE age = 10 +``` -# - or - +#### Scope +```ruby +class User < ApplicationRecord -query = AgeQuery.new(age: 10) -query.exectue + scope :min_age, ->(age) { MinAgeQuery.new(self, age: age) } -# - or - - -AgeQuery.call(relation, age: 20) +end ``` ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). ## Contributing -Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/lite-query. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. +Bug reports and pull requests are welcome on GitHub at https://github.com/drexed/lite-query. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). ## Code of Conduct -Everyone interacting in the Lite::Query project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/lite-query/blob/master/CODE_OF_CONDUCT.md). +Everyone interacting in the Lite::Query project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/drexed/lite-query/blob/master/CODE_OF_CONDUCT.md).