diff --git a/.gitignore b/.gitignore index 42e81982..8f84fbea 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ tarballs/ # OS X .DS_Store +*.yaml.lock diff --git a/stack-persistent-213.yaml b/stack-persistent-213.yaml new file mode 100644 index 00000000..3fd9703d --- /dev/null +++ b/stack-persistent-213.yaml @@ -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 diff --git a/yesod-persistent/Yesod/Persist/Core.hs b/yesod-persistent/Yesod/Persist/Core.hs index b7c82baf..6a671ca7 100644 --- a/yesod-persistent/Yesod/Persist/Core.hs +++ b/yesod-persistent/Yesod/Persist/Core.hs @@ -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