on master help sign in
WIP deleteWhere implemented
75c4f08AgentM
Database/Persist/ProjectM36.hs+17−3
@@ -229,6 +229,9 @@ dummyFromUnique _ = Nothing
229dummyFromFilter :: Filter v -> Maybe v
229dummyFromFilter :: Filter v -> Maybe v
230dummyFromFilter _ = Nothing
230dummyFromFilter _ = Nothing
231
231
232+dummyFromFilters :: [Filter v] -> Maybe v
233+dummyFromFilters _ = Nothing
234+
232dummyFromUpdate :: DPT.Update v -> Maybe v
235dummyFromUpdate :: DPT.Update v -> Maybe v
233dummyFromUpdate _ = Nothing
236dummyFromUpdate _ = Nothing
234
237
@@ -453,6 +456,17 @@ instance PersistQuery C.Connection where
453 Left err -> Trans.liftIO $ throwIO $ PersistError "updateWhere pooped"
456 Left err -> Trans.liftIO $ throwIO $ PersistError "updateWhere pooped"
454 Right () -> return ()
457 Right () -> return ()
455
458
456−
459+ deleteWhere filters = do
457−
460+ conn <- ask
458−
461+ e <- runEitherT $ do
462+ restrictionPredicate <- hoistEither $ multiFilterAsRestrictionPredicate True filters
463+ let entDef = entityDef $ dummyFromFilters filters
464+ relVarName = unDBName $ entityDB entDef
465+ deleteExpr = Delete relVarName restrictionPredicate
466+ maybeErr <- Trans.liftIO $ C.executeDatabaseContextExpr conn deleteExpr
467+ case maybeErr of
468+ Just err -> left err
469+ Nothing -> right ()
470+ case e of
471+ Left err -> Trans.liftIO $ throwIO $ PersistError "updateWhere pooped"
472+ Right () -> return ()