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)