{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}

module Faker.Coffee where

import Data.Text
import Faker
import Faker.Internal
import Faker.Provider.Coffee
import Faker.TH

$(generateFakeField "coffee" "country")

$(generateFakeField "coffee" "variety")

$(generateFakeField "coffee" "intensifier")

$(generateFakeField "coffee" "body")

$(generateFakeField "coffee" "descriptor")

notes :: Fake Text
notes :: Fake Text
notes =
  (FakerSettings -> IO Text) -> Fake Text
forall a. (FakerSettings -> IO a) -> Fake a
Fake
    (Text
-> AesonKey
-> (FakerSettings -> IO (Unresolved Text))
-> (FakerSettings -> AesonKey -> IO Text)
-> FakerSettings
-> IO Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> AesonKey
-> (FakerSettings -> m (Unresolved Text))
-> (FakerSettings -> AesonKey -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVecWithoutVector
       Text
"coffee"
       AesonKey
"notes"
       FakerSettings -> IO (Unresolved Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved Text)
coffeeNotesProvider
       FakerSettings -> AesonKey -> IO Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> AesonKey -> m Text
resolveCoffeeText)

$(generateFakeField "coffee" "name_1")

$(generateFakeField "coffee" "name_2")

blendName :: Fake Text
blendName :: Fake Text
blendName =
  (FakerSettings -> IO Text) -> Fake Text
forall a. (FakerSettings -> IO a) -> Fake a
Fake
    (Text
-> AesonKey
-> (FakerSettings -> IO (Unresolved Text))
-> (FakerSettings -> AesonKey -> IO Text)
-> FakerSettings
-> IO Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> AesonKey
-> (FakerSettings -> m (Unresolved Text))
-> (FakerSettings -> AesonKey -> m Text)
-> FakerSettings
-> m Text
cachedRandomUnresolvedVecWithoutVector
       Text
"coffee"
       AesonKey
"blendName"
       FakerSettings -> IO (Unresolved Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Unresolved Text)
coffeeBlendNameProvider
       FakerSettings -> AesonKey -> IO Text
forall (m :: * -> *).
(MonadIO m, MonadThrow m) =>
FakerSettings -> AesonKey -> m Text
resolveCoffeeText)

regionsColombia :: Fake Text
regionsColombia :: Fake Text
regionsColombia =
  (FakerSettings -> IO Text) -> Fake Text
forall a. (FakerSettings -> IO a) -> Fake a
Fake
    (Text
-> AesonKey
-> (FakerSettings -> IO (Vector Text))
-> FakerSettings
-> IO Text
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
Text
-> AesonKey
-> (FakerSettings -> m (Vector Text))
-> FakerSettings
-> m Text
cachedRandomVec Text
"coffee" AesonKey
"regionsColumbia" FakerSettings -> IO (Vector Text)
forall (m :: * -> *).
(MonadThrow m, MonadIO m) =>
FakerSettings -> m (Vector Text)
coffeeRegionsColombiaProvider)

$(generateFakeFields "coffee" ["regions", "brazil"])

$(generateFakeFields "coffee" ["regions", "sumatra"])

$(generateFakeFields "coffee" ["regions", "ethiopia"])

$(generateFakeFields "coffee" ["regions", "honduras"])

$(generateFakeFields "coffee" ["regions", "kenya"])

$(generateFakeFields "coffee" ["regions", "uganda"])

$(generateFakeFields "coffee" ["regions", "mexico"])

$(generateFakeFields "coffee" ["regions", "guatemala"])

$(generateFakeFields "coffee" ["regions", "nicaragua"])

$(generateFakeFields "coffee" ["regions", "costa_rica"])

$(generateFakeFields "coffee" ["regions", "tanzania"])

$(generateFakeFields "coffee" ["regions", "el_salvador"])

$(generateFakeFields "coffee" ["regions", "rwanda"])

$(generateFakeFields "coffee" ["regions", "burundi"])

$(generateFakeFields "coffee" ["regions", "panama"])

$(generateFakeFields "coffee" ["regions", "yemen"])

$(generateFakeFields "coffee" ["regions", "india"])