mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-07-03 17:42:08 +00:00
e05a35e26e
* postgres: modules structure (#5401) * postgres: schema, field conversions (#5430) * postgres: rework chat list pagination query (#5441) * prepare cabal for merge * restore cabal changes * simplexmq * postgres: implementation wip (tests don't pass) (#5481) * restore ios file * postgres: implementation - tests pass (#5487) * refactor DB options * refactor * line * style * style * refactor * $ * update simplexmq * constraintError * handleDBErrors * fix * remove param * Ok * case * case * case * comment --------- Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
45 lines
1.2 KiB
Haskell
45 lines
1.2 KiB
Haskell
{-# LANGUAGE ApplicativeDo #-}
|
|
{-# LANGUAGE NamedFieldPuns #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module Simplex.Chat.Options.SQLite where
|
|
|
|
import Data.ByteArray (ScrubbedBytes)
|
|
import Options.Applicative
|
|
import System.FilePath (combine)
|
|
|
|
data ChatDbOpts = ChatDbOpts
|
|
{ dbFilePrefix :: String,
|
|
dbKey :: ScrubbedBytes,
|
|
vacuumOnMigration :: Bool
|
|
}
|
|
|
|
chatDbOptsP :: FilePath -> FilePath -> Parser ChatDbOpts
|
|
chatDbOptsP appDir defaultDbName = do
|
|
dbFilePrefix <-
|
|
strOption
|
|
( long "database"
|
|
<> short 'd'
|
|
<> metavar "DB_FILE"
|
|
<> help "Path prefix to chat and agent database files"
|
|
<> value (combine appDir defaultDbName)
|
|
<> showDefault
|
|
)
|
|
dbKey <-
|
|
strOption
|
|
( long "key"
|
|
<> short 'k'
|
|
<> metavar "KEY"
|
|
<> help "Database encryption key/pass-phrase"
|
|
<> value ""
|
|
)
|
|
disableVacuum <-
|
|
switch
|
|
( long "disable-vacuum"
|
|
<> help "Do not vacuum database after migrations"
|
|
)
|
|
pure ChatDbOpts {dbFilePrefix, dbKey, vacuumOnMigration = not disableVacuum}
|
|
|
|
dbString :: ChatDbOpts -> String
|
|
dbString ChatDbOpts {dbFilePrefix} = dbFilePrefix <> "_chat.db, " <> dbFilePrefix <> "_agent.db"
|