Support persistent-2.13

This commit is contained in:
parsonsmatt 2021-05-05 12:15:57 -06:00
parent 2f8036c61f
commit 3224e8e6f1
3 changed files with 35 additions and 1 deletions

1
.gitignore vendored
View File

@ -25,3 +25,4 @@ tarballs/
# OS X
.DS_Store
*.yaml.lock

25
stack-persistent-213.yaml Normal file
View File

@ -0,0 +1,25 @@
resolver: nightly-2021-03-31
packages:
- ./yesod-core
- ./yesod-static
- ./yesod-persistent
- ./yesod-newsfeed
- ./yesod-form
- ./yesod-form-multi
- ./yesod-auth
- ./yesod-auth-oauth
- ./yesod-sitemap
- ./yesod-test
- ./yesod-bin
- ./yesod
- ./yesod-eventsource
- ./yesod-websockets
extra-deps:
- lift-type-0.1.0.1
- git: git@github.com:yesodweb/persistent
commit: 315ae91349ef4fbc2f4f2595cb7d3423e79ef80f
subdirs:
- persistent
- persistent-sqlite
- persistent-mysql
- persistent-postgresql

View File

@ -25,6 +25,7 @@ module Yesod.Persist.Core
import Database.Persist
import Control.Monad.Trans.Reader (ReaderT, runReaderT)
import Data.Foldable (toList)
import Yesod.Core
import Data.Conduit
import Blaze.ByteString.Builder (Builder)
@ -33,6 +34,9 @@ import Control.Monad.Trans.Resource
import Control.Exception (throwIO)
import Yesod.Core.Types (HandlerContents (HCError))
import qualified Database.Persist.Sql as SQL
#if MIN_VERSION_persistent(2,13,0)
import qualified Database.Persist.SqlBackend.Internal as SQL
#endif
unSqlPersistT :: a -> a
unSqlPersistT = id
@ -197,7 +201,11 @@ insert400 datum = do
case conflict of
Just unique ->
#if MIN_VERSION_persistent(2, 12, 0)
badRequest' $ map (unFieldNameHS . fst) $ persistUniqueToFieldNames unique
-- toList is called here because persistent-2.13 changed this
-- to a nonempty list. for versions of persistent prior to 2.13, toList
-- will be a no-op. for persistent-2.13, it'll convert the NonEmptyList to
-- a List.
badRequest' $ map (unFieldNameHS . fst) $ toList $ persistUniqueToFieldNames unique
#else
badRequest' $ map (unHaskellName . fst) $ persistUniqueToFieldNames unique
#endif