Sha256: 9a62d47e2e62034751be908cd0ea81cccae5ed2ee64e013710a951af352a7353

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 KB

Contents

# NQL

[![Build Status](https://travis-ci.org/gabynaiman/nql.png)](https://travis-ci.org/gabynaiman/nql)

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                  |
    | =      | 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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nql-0.1.0 README.md