refactor: clean up per good-code review

- Remove internal helpers from Postgres.hs export list (withDB, withDB',
  handleDuplicate, assertUpdated, withLog are not imported externally)
- Replace local isNothing_ with Data.Maybe.isNothing in Env.hs
- Consolidate duplicate/unused imports in XFTPStoreTests.hs
- Add file_path IS NULL and status guards to STM setFilePath, matching
  the Postgres implementation semantics
This commit is contained in:
shum
2026-04-07 12:59:43 +00:00
parent 5de4f78e50
commit 00ed1519f5
4 changed files with 14 additions and 20 deletions
+2 -4
View File
@@ -41,6 +41,7 @@ import Simplex.FileTransfer.Server.Store
import Simplex.Messaging.Agent.Store.Shared (MigrationConfirmation)
#if defined(dbServerPostgres)
import Data.Functor (($>))
import Data.Maybe (isNothing)
import Simplex.FileTransfer.Server.Store.Postgres (PostgresFileStore, importFileStore, exportFileStore)
import Simplex.FileTransfer.Server.Store.Postgres.Config (PostgresFileStoreCfg (..), defaultXFTPDBOpts)
import Simplex.Messaging.Server.CLI (iniDBOptions, settingIsOn)
@@ -190,14 +191,11 @@ checkFileStoreMode ini storeType storeLogFilePath = case storeType of
"database" -> do
storeLogExists <- doesFileExist storeLogFilePath
let dbStoreLogOn = settingIsOn "STORE_LOG" "db_store_log" ini
when (storeLogExists && isNothing_ dbStoreLogOn) $ do
when (storeLogExists && isNothing dbStoreLogOn) $ do
putStrLn $ "Error: store log file " <> storeLogFilePath <> " exists but store_files is `database`."
putStrLn "Use `file-server database import` to migrate, or set `db_store_log: on`."
exitFailure
_ -> pure ()
where
isNothing_ Nothing = True
isNothing_ _ = False
#else
checkFileStoreMode _ _ _ = pure ()
#endif
+9 -3
View File
@@ -97,9 +97,15 @@ instance FileStoreClass STMFileStore where
pure $ Right ()
setFilePath st sId fPath = atomically $
withSTMFile st sId $ \FileRec {filePath} -> do
writeTVar filePath (Just fPath)
pure $ Right ()
withSTMFile st sId $ \FileRec {filePath, fileStatus} -> do
readTVar filePath >>= \case
Just _ -> pure $ Left AUTH
Nothing ->
readTVar fileStatus >>= \case
EntityActive -> do
writeTVar filePath (Just fPath)
pure $ Right ()
_ -> pure $ Left AUTH
addRecipient st@STMFileStore {recipients} senderId (FileRecipient rId rKey) = atomically $
withSTMFile st senderId $ \FileRec {recipientIds} -> do
@@ -9,11 +9,6 @@
module Simplex.FileTransfer.Server.Store.Postgres
( PostgresFileStore (..),
withDB,
withDB',
handleDuplicate,
assertUpdated,
withLog,
importFileStore,
exportFileStore,
)
+3 -8
View File
@@ -6,22 +6,17 @@
module CoreTests.XFTPStoreTests (xftpStoreTests, xftpMigrationTests) where
import Control.Monad
import qualified Data.ByteString.Char8 as B
import Data.Word (Word32)
import qualified Data.Set as S
import Simplex.FileTransfer.Protocol (FileInfo (..), SFileParty (..))
import Simplex.FileTransfer.Server.Store
import Simplex.FileTransfer.Server.Store.Postgres (PostgresFileStore)
import Simplex.FileTransfer.Server.Store.Postgres.Config (PostgresFileStoreCfg)
import Simplex.FileTransfer.Server.StoreLog
import Simplex.FileTransfer.Server.Store.Postgres (PostgresFileStore, importFileStore, exportFileStore)
import Simplex.FileTransfer.Server.StoreLog (closeStoreLog, readWriteFileStore, writeFileStore)
import Simplex.FileTransfer.Transport (XFTPErrorType (..))
import qualified Simplex.Messaging.Crypto as C
import Simplex.Messaging.Protocol (BlockingInfo (..), BlockingReason (..), EntityId (..))
import Simplex.Messaging.Server.QueueStore (ServerEntityStatus (..))
import Simplex.Messaging.SystemTime (RoundedSystemTime (..))
import Simplex.FileTransfer.Server.Store.Postgres (importFileStore, exportFileStore)
import Simplex.FileTransfer.Server.StoreLog (readWriteFileStore, writeFileStore)
import Simplex.Messaging.Server.StoreLog (openWriteStoreLog)
import Simplex.Messaging.SystemTime (RoundedSystemTime (..))
import System.Directory (doesFileExist, removeFile)
import Test.Hspec hiding (fit, it)
import UnliftIO.STM