Skip to content
/ nql Public

Natural Query Language built on top of ActiveRecord and Ransack

License

Notifications You must be signed in to change notification settings

gabynaiman/nql

Repository files navigation

NQL

Gem Version Build Status Coverage Status Code Climate

Natural Query Language built on top of ActiveRecord and Ransack

Installation

Add this line to your application's Gemfile:

gem 'nql'

And then execute:

$ bundle

Or install it yourself as:

$ gem install nql

Supported comparators

--------------------------------------
| Symbol | Description               |
--------------------------------------
| :      | Contains                  |
| !:     | Not contains              |
| =      | Equals                    |
| !=     | Not equals                |
| >      | Grater than               |
| >=     | Grater or equals than     |
| <      | Less than                 |
| <=     | Less or equals than       |
| ~      | Matches (eq ignore case)  |
--------------------------------------

Usage

Converts from natural language to query expression

Country.nql('(name: arg | name: br) & region = south').to_sql
=> "SELECT coutries.* FROM countries WHERE (countries.name LIKE '%arg%' OR countries.name LIKE '%br%') AND region = 'south'"

Joins support

Country.nql('cities.name: buenos').to_sql
=> "SELECT countries.* FROM countries LEFT OUTER JOIN cities ON countries.id = cities.country_id WHERE cities.name LIKE '%buenos%'"

Invalid expressions handling

Safe query

Country.nql('xyz').to_sql
=> "SELECT coutries.* FROM countries WHERE (1=2)

Raising exceptions

Country.nql!('xyz') => raise NQL::SyntaxError

Country.nql!('xyz: arg') => raise NQL::AttributesNotFoundError

Country.nql!(1234) => raise NQL::DataTypeError

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

About

Natural Query Language built on top of ActiveRecord and Ransack

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages