ENH throw exception upon match error

This commit is contained in:
Nathan Dwarshuis 2023-01-24 22:15:32 -05:00
parent eb79b325eb
commit 7ad754bead
2 changed files with 16 additions and 8 deletions

View File

@ -1,3 +1,4 @@
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
@ -156,7 +157,11 @@ runDumpAccountKeys c = do
runSync :: MonadUnliftIO m => FilePath -> m ()
runSync c = do
config <- readConfig c
migrate_ (sqlConfig config) $ do
catch (sync_ config) $ \case
MatchException -> liftIO $ putStrLn "match error"
RegexException -> liftIO $ putStrLn "regex error"
where
sync_ config = migrate_ (sqlConfig config) $ do
s <- getDBState config
flip runReaderT (s $ takeDirectory c) $ do
insertBudget $ budget config

View File

@ -302,11 +302,14 @@ insertManual
insertImport :: MonadUnliftIO m => Import -> MappingT m ()
insertImport i = whenHash CTImport i $ \c -> do
bounds <- asks kmStatementInterval
bs <- readImport i
res <- readImport i
-- TODO this isn't efficient, the whole file will be read and maybe no
-- transactions will be desired
case res of
StatementPass bs -> do
rs <- mapM resolveTx $ filter (inMaybeBounds bounds . txDate) bs
lift $ mapM_ (insertTx c) rs
StatementFail _ -> throwIO MatchException
--------------------------------------------------------------------------------
-- low-level transaction stuff