module Unison.Codebase.Editor.HandleInput.Config (handleConfigSet, handleConfigGet) where

import U.Codebase.Config (ConfigKey)
import U.Codebase.Sqlite.Queries qualified as Q
import Unison.Cli.Monad (Cli)
import Unison.Cli.Monad qualified as Cli
import Unison.Codebase.Editor.Output (Output (..))
import Unison.Prelude

handleConfigSet :: ConfigKey -> Text -> Cli ()
handleConfigSet :: ConfigKey -> Text -> Cli ()
handleConfigSet ConfigKey
key Text
value = do
  Transaction () -> Cli ()
forall a. Transaction a -> Cli a
Cli.runTransaction (Transaction () -> Cli ()) -> Transaction () -> Cli ()
forall a b. (a -> b) -> a -> b
$ ConfigKey -> Text -> Transaction ()
Q.setConfigValue ConfigKey
key Text
value

handleConfigGet :: ConfigKey -> Cli ()
handleConfigGet :: ConfigKey -> Cli ()
handleConfigGet ConfigKey
key = do
  Maybe Text
mayValue <- Transaction (Maybe Text) -> Cli (Maybe Text)
forall a. Transaction a -> Cli a
Cli.runTransaction (Transaction (Maybe Text) -> Cli (Maybe Text))
-> Transaction (Maybe Text) -> Cli (Maybe Text)
forall a b. (a -> b) -> a -> b
$ ConfigKey -> Transaction (Maybe Text)
Q.getConfigValue ConfigKey
key
  Output -> Cli ()
Cli.respond (Output -> Cli ()) -> Output -> Cli ()
forall a b. (a -> b) -> a -> b
$ ConfigKey -> Maybe Text -> Output
ConfigValueGet ConfigKey
key Maybe Text
mayValue