buuka/src/Operations/Query.hs

30 lines
597 B
Haskell
Raw Normal View History

2021-01-03 00:39:44 +02:00
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
2021-01-03 08:33:44 +02:00
import Data.Text
(Text)
import qualified Data.Text.IO as T
2021-10-27 20:46:23 +03:00
import Data.List.NonEmpty (NonEmpty)
2021-01-03 08:33:44 +02:00
2021-10-27 20:46:23 +03:00
query :: NonEmpty (Field Text, Text) -> BuukaM ()
query qs =
2021-01-03 08:33:44 +02:00
buukaQ (asks go) >>= traverse_ (liftIO . T.putStrLn)
2021-01-03 00:39:44 +02:00
where
2021-10-27 20:46:23 +03:00
q = foldMap (uncurry regex) qs
2021-01-03 08:33:44 +02:00
go :: Buuka -> [Text]
2021-10-27 20:46:23 +03:00
go b = formatEntries b (filter (predicate q) . B.elements $ b)
2021-01-03 00:39:44 +02:00