All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
While the version is in the 0.x range, any release MAY contain breaking
changes; the minor version is bumped for each one. See
CONTRIBUTING.md for the full policy.
[Unreleased]
[0.1.0-beta.2]
Changed
- Renamed the package and module namespace from
QuarrytoDecant(quarry→decant). No API or behavior change.
Added
:on_blankoption controlling what a blank/no-token term resolves to::all(default,dynamic(true)) or:none(dynamic(false), match nothing).
[0.1.0-beta.1]
Added
Decant.dynamic/2— compile a tokenized, multi-field search string into a composableEcto.Query.dynamic/2built over named bindings.- Two axes of boolean logic:
:token_logic(:anddefault) across words and:field_logic(:ordefault) across columns. - Match modes
:contains(default),:prefix,:suffix,:exact, settable call-wide via:matchor per-field. :casetoggle betweenILIKE(:insensitive, default) andLIKE(:sensitive).- Automatic
LIKEwildcard escaping (%,_,\) so user input matches literally; disable withescape: false. :castfield option wrapping a column inCAST(? AS TEXT)for searching non-text columns.Decant.Tokenizerwith configurable:pattern,:trim,:drop_empty,:downcase, and a:max_tokensbackstop.- Empty / blank /
nilterms returndynamic(true)for branch-free callers.