{-# LANGUAGE BangPatterns      #-}
{-# LANGUAGE OverloadedStrings #-}

{-# OPTIONS_GHC -fno-warn-unused-matches     #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing     #-}
{-# OPTIONS_GHC -fno-warn-unused-local-binds #-}

module Example4 where

import Control.Monad
import Data.Function
import Data.List
import HaskellWorks.Data.Json.PartialValue
import HaskellWorks.Data.Json.Standard.Cursor.Load.Cursor
import HaskellWorks.Data.Json.Standard.Load.Partial
import HaskellWorks.Data.MQuery
import HaskellWorks.Data.MQuery.Micro

import qualified Data.DList as DL

{- HLINT ignore "Reduce duplication" -}

example :: IO ()
example :: IO ()
example = do
  !JsonPartialValue
cursor <- String -> IO JsonPartialValue
loadPartial String
"corpus/bench/78mb.json"
  !GenericCursor
  ByteString (Vector Word64) (SimpleBalancedParens (Vector Word64))
cursor <- String
-> IO
     (GenericCursor
        ByteString (Vector Word64) (SimpleBalancedParens (Vector Word64)))
loadCursorWithIndex String
"corpus/bench/78mb.json"
  !Cursor
cursor <- String -> IO Cursor
loadCursor String
"corpus/bench/78mb.json"
  !GenericCursor
  ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64))
cursor <- String
-> IO
     (GenericCursor
        ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64)))
loadCursorWithCsPoppyIndex String
"corpus/bench/78mb.json"
  let !json :: JsonPartialValue
json = forall a. JsonPartialValueAt a => a -> JsonPartialValue
jsonPartialJsonValueAt GenericCursor
  ByteString CsPoppy1 (SimpleBalancedParens (Vector Word64))
cursor
  let q :: MQuery JsonPartialValue
q = forall a. DList a -> MQuery a
MQuery (forall a. a -> DList a
DL.singleton JsonPartialValue
json)

  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall a b. a -> (a -> b) -> b
& forall a. Int -> Int -> MQuery a -> MQuery a
page Int
10 Int
1
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Text
-> JsonPartialValue -> JsonPartialValue -> MQuery JsonPartialValue
hasKV Text
"founded_year" (Double -> JsonPartialValue
JsonPartialNumber Double
2005) forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"name" forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code")
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code") forall a b. a -> (a -> b) -> b
& forall a. ([a] -> [a]) -> MQuery a -> MQuery a
onList (forall a. Eq a => [a] -> [a]
uniq forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Ord a => [a] -> [a]
sort)
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a. Eq a => a -> a -> MQuery a
valueOf String
"USD") forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a b. (a -> MQuery b) -> a -> MQuery a
having (JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a. Eq a => a -> a -> MQuery a
valueOf String
"USD") forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_amount") forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a b. (a -> MQuery b) -> a -> MQuery a
having (JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a. Eq a => a -> a -> MQuery a
valueOf String
"USD") forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_amount" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery Integer
castAsInteger ) forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a b. (a -> MQuery b) -> a -> MQuery a
having (JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a. Eq a => a -> a -> MQuery a
valueOf String
"USD") forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_amount" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery Integer
castAsInteger ) forall a b. a -> (a -> b) -> b
& forall a b. ([a] -> b) -> MQuery a -> MQuery b
aggregate forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
sum

  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall a b. a -> (a -> b) -> b
& forall a. Int -> Int -> MQuery a -> MQuery a
page Int
10 Int
1
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"name" forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString)
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString) forall a b. a -> (a -> b) -> b
& forall a. ([a] -> [a]) -> MQuery a -> MQuery a
onList (forall a. Eq a => [a] -> [a]
uniq forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Ord a => [a] -> [a]
sort)
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a. Eq a => a -> a -> MQuery a
valueOf String
"USD") forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a b. (a -> MQuery b) -> a -> MQuery a
having (JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a. Eq a => a -> a -> MQuery a
valueOf String
"USD") forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_amount") forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a b. (a -> MQuery b) -> a -> MQuery a
having (JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a. Eq a => a -> a -> MQuery a
valueOf String
"USD") forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_amount" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery Integer
castAsInteger ) forall a b. a -> (a -> b) -> b
& forall a. Int -> MQuery a -> MQuery a
limit Int
10
  forall a. Pretty a => a -> IO ()
putPretty forall a b. (a -> b) -> a -> b
$ MQuery JsonPartialValue
q forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (JsonPartialValue -> MQuery JsonPartialValue
item forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"acquisition" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a b. (a -> MQuery b) -> a -> MQuery a
having (JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_currency_code" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery String
asString forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> forall a. Eq a => a -> a -> MQuery a
valueOf String
"USD") forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery (Entry Text JsonPartialValue)
entry forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Entry Text JsonPartialValue -> MQuery JsonPartialValue
named Text
"price_amount" forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> JsonPartialValue -> MQuery Integer
castAsInteger ) forall a b. a -> (a -> b) -> b
& forall a b. ([a] -> b) -> MQuery a -> MQuery b
aggregate forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
sum

  forall (m :: * -> *) a. Monad m => a -> m a
return ()