From 08b804998a9945f9b85673da06a858d132f6a543 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 27 May 2019 19:55:22 +0200 Subject: [PATCH] Fix CryptoID serialization --- src/CryptoID.hs | 1 + src/CryptoID/TH.hs | 10 ++++++++++ src/Database/Persist/Class/Instances.hs | 1 + 3 files changed, 12 insertions(+) diff --git a/src/CryptoID.hs b/src/CryptoID.hs index 4914bac78..59b925060 100644 --- a/src/CryptoID.hs +++ b/src/CryptoID.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module CryptoID diff --git a/src/CryptoID/TH.hs b/src/CryptoID/TH.hs index c3f1e4322..85f73dc03 100644 --- a/src/CryptoID/TH.hs +++ b/src/CryptoID/TH.hs @@ -11,6 +11,11 @@ import Data.Binary.SerializationLength import Data.CaseInsensitive (CI) import System.FilePath (FilePath) +import Data.Binary (Binary) +import qualified Data.Binary as Binary + +import Database.Persist.Sql + decCryptoIDs :: [Name] -> DecsQ decCryptoIDs = fmap concat . mapM decCryptoID @@ -21,6 +26,11 @@ decCryptoIDs = fmap concat . mapM decCryptoID instance HasFixedSerializationLength $(t) where type SerializationLength $(t) = SerializationLength Int64 + instance {-# OVERLAPPING #-} Binary $(t) where + put = Binary.put . fromSqlKey + putList = Binary.putList . map fromSqlKey + get = toSqlKey <$> Binary.get + type instance CryptoIDNamespace a $(t) = $(litT $ strTyLit ns) |] diff --git a/src/Database/Persist/Class/Instances.hs b/src/Database/Persist/Class/Instances.hs index 4864f0df3..23209a44b 100644 --- a/src/Database/Persist/Class/Instances.hs +++ b/src/Database/Persist/Class/Instances.hs @@ -1,4 +1,5 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} +{-# LANGUAGE UndecidableInstances #-} module Database.Persist.Class.Instances (