module Cfg.Source
( FetchSource
, ConfigSource (..)
)
where
import Cfg.Deriving.Value (Value)
import Data.ByteString qualified as BS
import Data.ByteString.Lazy qualified as BL
import Data.Int (Int16, Int32, Int64, Int8)
import Data.List.NonEmpty (NonEmpty)
import Data.Map.Strict (empty)
import Data.Text (Text)
import Data.Text.Lazy qualified as TL
import Data.Vector (Vector)
import Data.Word (Word16, Word32, Word64, Word8)
import KeyTree (Free (..), KeyTree)
type FetchSource m = KeyTree Text Text -> m (KeyTree Text Text)
class ConfigSource a where
configSource :: KeyTree Text Text
instance ConfigSource (Value a) where
configSource :: KeyTree Text Text
configSource = Map Text (KeyTree Text Text) -> KeyTree Text Text
forall (f :: * -> *) a. f (Free f a) -> Free f a
Free Map Text (KeyTree Text Text)
forall k a. Map k a
empty
deriving via (Value ()) instance ConfigSource ()
deriving via (Value Bool) instance ConfigSource Bool
deriving via (Value Char) instance ConfigSource Char
deriving via (Value TL.Text) instance ConfigSource TL.Text
deriving via (Value BL.ByteString) instance ConfigSource BL.ByteString
deriving via (Value BS.ByteString) instance ConfigSource BS.ByteString
deriving via (Value Text) instance ConfigSource Text
deriving via (Value [a]) instance ConfigSource [a]
deriving via (Value (NonEmpty a)) instance ConfigSource (NonEmpty a)
deriving via (Value (Vector a)) instance ConfigSource (Vector a)
deriving via (Value (Maybe a)) instance ConfigSource (Maybe a)
deriving via (Value Double) instance ConfigSource Double
deriving via (Value Float) instance ConfigSource Float
deriving via (Value Int) instance ConfigSource Int
deriving via (Value Int8) instance ConfigSource Int8
deriving via (Value Int16) instance ConfigSource Int16
deriving via (Value Int32) instance ConfigSource Int32
deriving via (Value Int64) instance ConfigSource Int64
deriving via (Value Integer) instance ConfigSource Integer
deriving via (Value Word) instance ConfigSource Word
deriving via (Value Word8) instance ConfigSource Word8
deriving via (Value Word16) instance ConfigSource Word16
deriving via (Value Word32) instance ConfigSource Word32
deriving via (Value Word64) instance ConfigSource Word64
deriving via (Value (a, b)) instance ConfigSource (a, b)