From ecdb22aa613757ee6f0197a2d4191dcb3d603da1 Mon Sep 17 00:00:00 2001 From: Steffen Jost Date: Thu, 28 Oct 2021 11:22:03 +0200 Subject: [PATCH] fix(termidentifier): rational not working use derived day instances instead --- src/Model/Types/DateTime.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Model/Types/DateTime.hs b/src/Model/Types/DateTime.hs index ede249af1..a03928b78 100644 --- a/src/Model/Types/DateTime.hs +++ b/src/Model/Types/DateTime.hs @@ -29,7 +29,7 @@ import Data.Aeson.Types as Aeson newtype TermIdentifier = TermIdentifier { getTermDay :: Day } deriving (Show, Read, Eq, Ord, Generic, Typeable, Enum) - deriving newtype (Binary, ISO8601) + deriving newtype (Binary, ISO8601, PersistField, PersistFieldSql) deriving anyclass (NFData) -- ought to be equivalent to deriving stock (Show, Read, Eq, Ord, Generic, Typeable, Enum, Binary, NFData) @@ -102,6 +102,7 @@ termToRational = (dayOffset +) . (/ daysPerYear) . fromIntegral . fromEnum termFromRational :: Rational -> TermIdentifier termFromRational = toEnum . round . (daysPerYear *) . subtract dayOffset +{- -- For newtype Day, PersistField instance can be derived automatically instance PersistField TermIdentifier where toPersistValue = PersistRational . termToRational fromPersistValue (PersistRational t) = Right $ termFromRational t @@ -109,6 +110,7 @@ instance PersistField TermIdentifier where instance PersistFieldSql TermIdentifier where sqlType _ = SqlNumeric 9 5 -- total significant digits; significant digits after decimal point +-} instance ToHttpApiData TermIdentifier where toUrlPiece = termToText