packages feed

persistent 2.10.5.2 → 2.10.5.3

raw patch · 4 files changed

+25/−6 lines, 4 files

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # Changelog for persistent +## 2.10.5.3++* Backported the fix from [#1135](https://github.com/yesodweb/persistent/pull/1135) to the 2.10 branch.+  This should fix reading `PersistUTCTime` values.+ ## 2.10.5.2  * [#1041](https://github.com/yesodweb/persistent/pull/1041)
Database/Persist/Class/PersistField.hs view
@@ -10,6 +10,7 @@  import Control.Arrow (second) import Control.Monad ((<=<))+import Control.Applicative ((<|>)) import qualified Data.Aeson as A import Data.ByteString.Char8 (ByteString, unpack, readInt) import qualified Data.ByteString.Lazy as L@@ -303,18 +304,24 @@     fromPersistValue (PersistInt64 i)   = Right $ posixSecondsToUTCTime $ (/ (1000 * 1000 * 1000)) $ fromIntegral $ i #endif     fromPersistValue x@(PersistText t)  =-        case reads $ T.unpack t of-            (d, _):_ -> Right d+        case reads s of+            (d, _):_ ->+                Right d             _ ->-                case parse8601 $ T.unpack t of+                case parse8601 s <|> parsePretty s of                     Nothing -> Left $ fromPersistValueParseError "UTCTime" x                     Just x' -> Right x'       where+        s = T.unpack t #if MIN_VERSION_time(1,5,0)-        parse8601 = parseTimeM True defaultTimeLocale "%FT%T%Q"+        parse8601 = parseTimeM True defaultTimeLocale format8601+        parsePretty = parseTimeM True defaultTimeLocale formatPretty #else-        parse8601 = parseTime defaultTimeLocale "%FT%T%Q"+        parse8601 = parseTime defaultTimeLocale format8601+        parsePretty = parseTime defaultTimeLocale formatPretty #endif+        format8601 = "%FT%T%Q"+        formatPretty = "%F %T%Q"     fromPersistValue x@(PersistByteString s) =         case reads $ unpack s of             (d, _):_ -> Right d
persistent.cabal view
@@ -1,5 +1,5 @@ name:            persistent-version:         2.10.5.2+version:         2.10.5.3 license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>
test/main.hs view
@@ -5,7 +5,9 @@ import Data.List.NonEmpty (NonEmpty(..)) import qualified Data.List.NonEmpty as NEL import qualified Data.Map as Map+import Data.Time +import Database.Persist.Class.PersistField import Database.Persist.Quasi import Database.Persist.Types @@ -500,3 +502,8 @@                             [ ["something"]                             ] +    describe "fromPersistValue" $+        describe "UTCTime" $+            it "works with format" $+                fromPersistValue (PersistText "2018-02-27 10:49:42.123")+                    `shouldBe` Right (UTCTime (fromGregorian 2018 02 27) (timeOfDayToTime (TimeOfDay 10 49 42.123)))