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

View File

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