esqueleto-textsearch 1.1.5 → 1.2.0
raw patch · 4 files changed
+35/−3 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Database.Esqueleto.TextSearch: prefixOrQuery :: SearchTerm -> SqlExpr (Value (TsQuery Lexemes))
+ Database.Esqueleto.TextSearch.Language: prefixAndQueryLang :: RegConfig -> SearchTerm -> SqlExpr (Value (TsQuery Lexemes))
+ Database.Esqueleto.TextSearch.Language: prefixOrQuery :: SearchTerm -> SqlExpr (Value (TsQuery Lexemes))
+ Database.Esqueleto.TextSearch.Language: prefixOrQueryLang :: RegConfig -> SearchTerm -> SqlExpr (Value (TsQuery Lexemes))
+ Database.Esqueleto.TextSearch.Language: tsquery_and :: SqlExpr (Value (TsQuery Lexemes)) -> SqlExpr (Value (TsQuery Lexemes)) -> SqlExpr (Value (TsQuery Lexemes))
+ Database.Esqueleto.TextSearch.Language: tsquery_or :: SqlExpr (Value (TsQuery Lexemes)) -> SqlExpr (Value (TsQuery Lexemes)) -> SqlExpr (Value (TsQuery Lexemes))
Files
- Changelog.md +3/−0
- esqueleto-textsearch.cabal +1/−1
- src/Database/Esqueleto/TextSearch.hs +1/−0
- src/Database/Esqueleto/TextSearch/Language.hs +30/−2
Changelog.md view
@@ -1,5 +1,8 @@ # Change log for esqueleto text search +## Version 1.2.0++ Add prefix or query.++ expose binops on tsquery ## Version 1.1.5 + enable tests in CI
esqueleto-textsearch.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: esqueleto-textsearch-version: 1.1.5+version: 1.2.0 synopsis: PostgreSQL full text search for Esqueleto description: PostgreSQL text search functions for Esqueleto. homepage: https://github.com/jappeace/esqueleto-textsearch
src/Database/Esqueleto/TextSearch.hs view
@@ -6,6 +6,7 @@ module Database.Esqueleto.TextSearch ( (@@.) , prefixAndQuery+ , prefixOrQuery , toSearchTerm , SearchTerm , ts_rank
src/Database/Esqueleto/TextSearch/Language.hs view
@@ -7,6 +7,9 @@ module Database.Esqueleto.TextSearch.Language ( (@@.) , prefixAndQuery+ , prefixOrQuery+ , prefixAndQueryLang+ , prefixOrQueryLang , toSearchTerm , toSearchTermWeighted , SearchTerm@@ -16,6 +19,9 @@ , ts_rank , ts_rank_cd , setweight+ -- * ts binary+ , tsquery_or+ , tsquery_and ) where import Data.String (IsString)@@ -113,6 +119,14 @@ -> SqlExpr (Value (TsQuery Lexemes)) tsquery_and = unsafeSqlBinOp "&&" +-- | (||) for tsquery. This function would be called (&&.) but+-- Esqueleto's (&&.) confines that fn to sql boolean expressions.+-- x::tsquery && y::tsquery == to_tsquery('x & y')+tsquery_or :: SqlExpr (Value (TsQuery Lexemes))+ -> SqlExpr (Value (TsQuery Lexemes))+ -> SqlExpr (Value (TsQuery Lexemes))+tsquery_or = unsafeSqlBinOp "||"+ -- | format the query into lexemes -- the result can be used in '@@.' for example: --@@ -124,13 +138,27 @@ -- where_ $ (company ^. CompanySearchIndexDocument) @@. query -- @ --+-- this uses && to combine queries prefixAndQuery :: SearchTerm -> SqlExpr (Value (TsQuery Lexemes)) prefixAndQuery = prefixAndQueryLang "english" -- | specify a language to be used with the query. prefixAndQueryLang :: RegConfig -> SearchTerm -> SqlExpr (Value (TsQuery Lexemes))-prefixAndQueryLang language (SearchTerm ts) =- foldr1 tsquery_and+prefixAndQueryLang = prefixAndQueryLangWith tsquery_and++prefixOrQuery :: SearchTerm -> SqlExpr (Value (TsQuery Lexemes))+prefixOrQuery = prefixOrQueryLang "english"++-- | same as 'prefixAndQueryLang' but uses || to combine quereis+prefixOrQueryLang :: RegConfig -> SearchTerm -> SqlExpr (Value (TsQuery Lexemes))+prefixOrQueryLang = prefixAndQueryLangWith tsquery_or++-- | allows specifying which binary operation is used for combining queries.+prefixAndQueryLangWith :: (SqlExpr (Value (TsQuery Lexemes))+ -> SqlExpr (Value (TsQuery Lexemes))+ -> SqlExpr (Value (TsQuery Lexemes))) -> RegConfig -> SearchTerm -> SqlExpr (Value (TsQuery Lexemes))+prefixAndQueryLangWith binOp language (SearchTerm ts) =+ foldr1 binOp $ map (to_tsquery (val language) . val) $ toList ts