Utility.EctoQuery (Portico/Z v0.1.0)
Fancy Ecto queries that we often re-use across contexts.
Link to this section Summary
Functions
"Fuzzy-match" field
against value
using PostgreSQL Trigram similary
comparison.
Sanitize a user string, eg. when in use for LIKE queries.
Link to this section Functions
Link to this function
fuzzy_match(query, field, value, similarity \\ 0.7, limit \\ 100)
"Fuzzy-match" field
against value
using PostgreSQL Trigram similary
comparison.
Works for any table. The search will likely be slow if the
given field
doesn't have a BIN index. See the migration for
ZSchemas.FlatContact
for examples.
Orders by similarity, in descending order.
See https://www.postgresql.org/docs/9.6/pgtrgm.html for more information about trigram comparison.
Examples
iex> fuzzy_match(ZSchemas.FlatContact, :first_name, "Ashley") |> Z.Repo.all()
[%ZSchemas.FlatContact{}, ...]
Link to this function
sanitize(user_string)
Specs
Sanitize a user string, eg. when in use for LIKE queries.
Examples
iex> sanitize("some%$#garbage")
"somegarbage"