ENH throw exception upon match error
This commit is contained in:
parent
eb79b325eb
commit
7ad754bead
15
app/Main.hs
15
app/Main.hs
|
@ -1,3 +1,4 @@
|
|||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Main (main) where
|
||||
|
@ -156,10 +157,14 @@ runDumpAccountKeys c = do
|
|||
runSync :: MonadUnliftIO m => FilePath -> m ()
|
||||
runSync c = do
|
||||
config <- readConfig c
|
||||
migrate_ (sqlConfig config) $ do
|
||||
s <- getDBState config
|
||||
flip runReaderT (s $ takeDirectory c) $ do
|
||||
insertBudget $ budget config
|
||||
insertStatements config
|
||||
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
|
||||
insertStatements config
|
||||
|
||||
-- showBalances
|
||||
|
|
|
@ -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
|
||||
rs <- mapM resolveTx $ filter (inMaybeBounds bounds . txDate) bs
|
||||
lift $ mapM_ (insertTx c) rs
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue