Skip to content

VoiSmart/fiqlex

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fiqlex

FIQL (Feed Item Query Language) is a URI-friendly syntax for expressing filters.

FIQL looks like this:

fiql = "author.age=ge=25;author.name==*Doe"

Using this module you will be able to parse a FIQL string and to build a query for any system (SQL, Elasticsearch, etc...) from it.

Grammar

If you want to know more about FIQL grammar please check the RFC, and my lexer and parser

Quick start

First, add this module to your mix.exs file:

defp deps do
  [
    {:fiqlex, "~> 0.1.1"},
  ]
end

Given a FIQL string like:

fiql = "author.age=ge=25;author.name==*Doe"

Pass it to the parse/1 or parse1!/1 functions to retrieve an AST of the FIQL string:

{:ok, ast} = FIQLEx.parse(fiql)

Then you can use this AST to build you own query for your system or use our built-in query builders like FIQLEx.QueryBuilders.SQLQueryBuilder:

{:ok, sql_query} = FIQLEx.build_query(ast, FIQLEx.QueryBuilders.SQLQueryBuilder, table: "author")

Here, sql_query is SELECT * FROM author WHERE (author.age >= 25 AND author.name LIKE '%Doe').

N.B. to use SQLQueryBuilder, the optional dependency to ecto_sql must be added to your project's dependencies.

You can use your own query builder by providing your own module that uses FIQLEx.QueryBuilder as second argument of build_query/3.

Documentation

Documentation can be found in hexdoc

Tests

You can run tests with:

mix test

About

FIQL parser and query build for elixir

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 97.4%
  • Erlang 2.6%