30 lines
597 B
Haskell
30 lines
597 B
Haskell
module Operations.Query where
|
|
|
|
import Data.Query
|
|
|
|
import Control.Monad.Buuka
|
|
import Control.Monad.Reader
|
|
|
|
import Data.Foldable
|
|
(traverse_)
|
|
|
|
import Data.Buuka
|
|
(Buuka)
|
|
import qualified Data.Buuka as B
|
|
|
|
import Operations.Format
|
|
|
|
import Data.Text
|
|
(Text)
|
|
import qualified Data.Text.IO as T
|
|
import Data.List.NonEmpty (NonEmpty)
|
|
|
|
query :: NonEmpty (Field Text, Text) -> BuukaM ()
|
|
query qs =
|
|
buukaQ (asks go) >>= traverse_ (liftIO . T.putStrLn)
|
|
where
|
|
q = foldMap (uncurry regex) qs
|
|
go :: Buuka -> [Text]
|
|
go b = formatEntries b (filter (predicate q) . B.elements $ b)
|
|
|