From 6317ae92f0986d6943bd18155a5d571d0510e5ce Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 20 Mar 2019 11:59:14 +0100 Subject: [PATCH] Bessere Fehlermeldungen bei SortKey/FilterKey-Mismatch --- src/Handler/Utils/Table/Pagination.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Handler/Utils/Table/Pagination.hs b/src/Handler/Utils/Table/Pagination.hs index 741117297..22f3ef19b 100644 --- a/src/Handler/Utils/Table/Pagination.hs +++ b/src/Handler/Utils/Table/Pagination.hs @@ -53,7 +53,7 @@ import Control.Monad.Trans.Maybe import Data.Foldable (Foldable(foldMap)) -import Data.Map (Map, (!)) +import Data.Map (Map) import qualified Data.Map as Map import qualified Data.Set as Set @@ -652,7 +652,7 @@ dbTable PSValidator{..} dbtable@DBTable{ dbtIdent = dbtIdent'@(toPathPiece -> db = (, def) . first (map SomeMessage errs' <>) $ runPSValidator dbtable Nothing | otherwise = (, def) $ runPSValidator dbtable Nothing - psSorting' = map (\SortingSetting{..} -> (dbtSorting ! sortKey, sortDir)) psSorting + psSorting' = map (\SortingSetting{..} -> (Map.findWithDefault (error $ "Invalid sorting key: " <> show sortKey) sortKey dbtSorting, sortDir)) psSorting mapM_ (addMessageI Warning) errs @@ -667,7 +667,7 @@ dbTable PSValidator{..} dbtable@DBTable{ dbtIdent = dbtIdent'@(toPathPiece -> db E.offset (psPage * l) Just ps -> E.where_ $ dbtRowKey t `sqlIn` ps _other -> return () - Map.foldrWithKey (\key args expr -> E.where_ (filterColumn (dbtFilter ! key) args t) >> expr) (return ()) psFilter + Map.foldrWithKey (\key args expr -> E.where_ (filterColumn (Map.findWithDefault (error $ "Invalid filter key: " <> show key) key dbtFilter) args t) >> expr) (return ()) psFilter return (E.unsafeSqlValue "count(*) OVER ()" :: E.SqlExpr (E.Value Int64), dbtRowKey t, res) let mapMaybeM f = fmap catMaybes . mapM (\(k, v) -> runMaybeT $ (,) <$> pure k <*> f v)