packages feed

seihou-core-0.4.0.0: src/Seihou/Effect/ConfigReader.hs

module Seihou.Effect.ConfigReader
  ( ConfigReader (..),
    readGlobalConfig,
    readLocalConfig,
    readNamespaceConfig,
    readContextConfig,
  )
where

import Seihou.Core.Types (ConfigError)
import Seihou.Prelude

data ConfigReader :: Effect where
  ReadGlobalConfig :: ConfigReader m (Either ConfigError (Map Text Text))
  ReadLocalConfig :: ConfigReader m (Either ConfigError (Map Text Text))
  ReadNamespaceConfig :: Text -> ConfigReader m (Either ConfigError (Map Text Text))
  ReadContextConfig :: Text -> ConfigReader m (Either ConfigError (Map Text Text))

type instance DispatchOf ConfigReader = Dynamic

readGlobalConfig :: (ConfigReader :> es) => Eff es (Either ConfigError (Map Text Text))
readGlobalConfig = send ReadGlobalConfig

readLocalConfig :: (ConfigReader :> es) => Eff es (Either ConfigError (Map Text Text))
readLocalConfig = send ReadLocalConfig

readNamespaceConfig :: (ConfigReader :> es) => Text -> Eff es (Either ConfigError (Map Text Text))
readNamespaceConfig ns = send (ReadNamespaceConfig ns)

readContextConfig :: (ConfigReader :> es) => Text -> Eff es (Either ConfigError (Map Text Text))
readContextConfig ctx = send (ReadContextConfig ctx)