persistent 2.10.5.2 → 2.10.5.3
raw patch · 4 files changed
+25/−6 lines, 4 files
Files
- ChangeLog.md +5/−0
- Database/Persist/Class/PersistField.hs +12/−5
- persistent.cabal +1/−1
- test/main.hs +7/−0
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)))