mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-07-03 17:42:08 +00:00
87e8a10f1e
* core: use strict tables * fix field types * change encodings to match schema types; migrate sqlite tables to strict mode * stabilize postgres client tests, remove slow handshake tests * update simplexmq * fix test * change call_state type to text * fix directory service queries * update local_alias for existing schemas * change types before strict
29 lines
1.2 KiB
Haskell
29 lines
1.2 KiB
Haskell
{-# LANGUAGE CPP #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module Simplex.Chat.Store.AppSettings where
|
|
|
|
import Control.Monad (join)
|
|
import Control.Monad.IO.Class (liftIO)
|
|
import Data.Maybe (fromMaybe)
|
|
import Simplex.Chat.AppSettings (AppSettings (..), combineAppSettings, defaultAppSettings, defaultParseAppSettings)
|
|
import Simplex.Messaging.Agent.Store.AgentStore (maybeFirstRow)
|
|
import qualified Simplex.Messaging.Agent.Store.DB as DB
|
|
import Simplex.Messaging.Util (decodeJSON, encodeJSON)
|
|
|
|
#if defined(dbPostgres)
|
|
import Database.PostgreSQL.Simple (Only (..))
|
|
#else
|
|
import Database.SQLite.Simple (Only (..))
|
|
#endif
|
|
|
|
saveAppSettings :: DB.Connection -> AppSettings -> IO ()
|
|
saveAppSettings db appSettings = do
|
|
DB.execute_ db "DELETE FROM app_settings"
|
|
DB.execute db "INSERT INTO app_settings (app_settings) VALUES (?)" (Only $ encodeJSON appSettings)
|
|
|
|
getAppSettings :: DB.Connection -> Maybe AppSettings -> IO AppSettings
|
|
getAppSettings db platformDefaults = do
|
|
stored_ <- join <$> liftIO (maybeFirstRow (decodeJSON . fromOnly) $ DB.query_ db "SELECT app_settings FROM app_settings")
|
|
pure $ combineAppSettings (fromMaybe defaultAppSettings platformDefaults) (fromMaybe defaultParseAppSettings stored_)
|