{-# LANGUAGE DerivingVia #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeApplications #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Cardano.Ledger.State.Orphans where import Cardano.Crypto.Hash.Class import Cardano.Ledger.Alonzo.TxBody import Cardano.Ledger.Babbage.TxBody import Cardano.Ledger.BaseTypes (TxIx (..)) import Cardano.Ledger.Binary import Cardano.Ledger.Coin import Cardano.Ledger.Core import Cardano.Ledger.Credential import Cardano.Ledger.Hashes (unsafeMakeSafeHash) import Cardano.Ledger.Keys import Cardano.Ledger.PoolParams (PoolParams (..)) import Cardano.Ledger.Shelley.LedgerState import Cardano.Ledger.Shelley.PoolRank import Cardano.Ledger.State.UTxO import Cardano.Ledger.TxIn import Data.ByteString.Short import qualified Data.Text as T import Data.Typeable import Database.Persist import Database.Persist.Sqlite data SnapShotType = SnapShotMark | SnapShotSet | SnapShotGo deriving (Int -> SnapShotType -> ShowS [SnapShotType] -> ShowS SnapShotType -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [SnapShotType] -> ShowS $cshowList :: [SnapShotType] -> ShowS show :: SnapShotType -> String $cshow :: SnapShotType -> String showsPrec :: Int -> SnapShotType -> ShowS $cshowsPrec :: Int -> SnapShotType -> ShowS Show, SnapShotType -> SnapShotType -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SnapShotType -> SnapShotType -> Bool $c/= :: SnapShotType -> SnapShotType -> Bool == :: SnapShotType -> SnapShotType -> Bool $c== :: SnapShotType -> SnapShotType -> Bool Eq, Int -> SnapShotType SnapShotType -> Int SnapShotType -> [SnapShotType] SnapShotType -> SnapShotType SnapShotType -> SnapShotType -> [SnapShotType] SnapShotType -> SnapShotType -> SnapShotType -> [SnapShotType] forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a enumFromThenTo :: SnapShotType -> SnapShotType -> SnapShotType -> [SnapShotType] $cenumFromThenTo :: SnapShotType -> SnapShotType -> SnapShotType -> [SnapShotType] enumFromTo :: SnapShotType -> SnapShotType -> [SnapShotType] $cenumFromTo :: SnapShotType -> SnapShotType -> [SnapShotType] enumFromThen :: SnapShotType -> SnapShotType -> [SnapShotType] $cenumFromThen :: SnapShotType -> SnapShotType -> [SnapShotType] enumFrom :: SnapShotType -> [SnapShotType] $cenumFrom :: SnapShotType -> [SnapShotType] fromEnum :: SnapShotType -> Int $cfromEnum :: SnapShotType -> Int toEnum :: Int -> SnapShotType $ctoEnum :: Int -> SnapShotType pred :: SnapShotType -> SnapShotType $cpred :: SnapShotType -> SnapShotType succ :: SnapShotType -> SnapShotType $csucc :: SnapShotType -> SnapShotType Enum, SnapShotType forall a. a -> a -> Bounded a maxBound :: SnapShotType $cmaxBound :: SnapShotType minBound :: SnapShotType $cminBound :: SnapShotType Bounded) instance PersistField SnapShotType where toPersistValue :: SnapShotType -> PersistValue toPersistValue = Int64 -> PersistValue PersistInt64 forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (Integral a, Num b) => a -> b fromIntegral forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Enum a => a -> Int fromEnum fromPersistValue :: PersistValue -> Either Text SnapShotType fromPersistValue (PersistInt64 Int64 i64) = forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ forall a. Enum a => Int -> a toEnum forall a b. (a -> b) -> a -> b $ forall a b. (Integral a, Num b) => a -> b fromIntegral Int64 i64 fromPersistValue PersistValue _ = forall a b. a -> Either a b Left Text "Unexpected type" instance PersistFieldSql SnapShotType where sqlType :: Proxy SnapShotType -> SqlType sqlType Proxy SnapShotType _ = SqlType SqlInt32 instance PersistField ShortByteString where toPersistValue :: ShortByteString -> PersistValue toPersistValue = ByteString -> PersistValue PersistByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . ShortByteString -> ByteString fromShort fromPersistValue :: PersistValue -> Either Text ShortByteString fromPersistValue (PersistByteString ByteString bs) = forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ ByteString -> ShortByteString toShort ByteString bs fromPersistValue PersistValue _ = forall a b. a -> Either a b Left Text "Unexpected type" instance PersistFieldSql ShortByteString where sqlType :: Proxy ShortByteString -> SqlType sqlType Proxy ShortByteString _ = SqlType SqlBlob instance PersistField TxId where toPersistValue :: TxId -> PersistValue toPersistValue = ByteString -> PersistValue PersistByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . forall h a. Hash h a -> ByteString hashToBytes forall b c a. (b -> c) -> (a -> b) -> a -> c . forall i. SafeHash i -> Hash HASH i extractHash forall b c a. (b -> c) -> (a -> b) -> a -> c . TxId -> SafeHash EraIndependentTxBody unTxId fromPersistValue :: PersistValue -> Either Text TxId fromPersistValue (PersistByteString ByteString bs) = case forall h a. HashAlgorithm h => ByteString -> Maybe (Hash h a) hashFromBytes ByteString bs of Maybe (Hash HASH EraIndependentTxBody) Nothing -> forall a b. a -> Either a b Left Text "Invalid number of bytes for the hash" Just Hash HASH EraIndependentTxBody h -> forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ SafeHash EraIndependentTxBody -> TxId TxId forall a b. (a -> b) -> a -> b $ forall i. Hash HASH i -> SafeHash i unsafeMakeSafeHash Hash HASH EraIndependentTxBody h fromPersistValue PersistValue _ = forall a b. a -> Either a b Left Text "Unexpected type" instance PersistFieldSql TxId where sqlType :: Proxy TxId -> SqlType sqlType Proxy TxId _ = SqlType SqlBlob deriving instance PersistField (CompactForm Coin) deriving instance PersistFieldSql (CompactForm Coin) deriving instance PersistField TxIx deriving instance PersistFieldSql TxIx instance PersistField Coin where toPersistValue :: Coin -> PersistValue toPersistValue = Int64 -> PersistValue PersistInt64 forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (Integral a, Num b) => a -> b fromIntegral forall b c a. (b -> c) -> (a -> b) -> a -> c . Coin -> Integer unCoin fromPersistValue :: PersistValue -> Either Text Coin fromPersistValue (PersistInt64 Int64 i64) = forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ Integer -> Coin Coin forall a b. (a -> b) -> a -> b $ forall a b. (Integral a, Num b) => a -> b fromIntegral Int64 i64 fromPersistValue PersistValue _ = forall a b. a -> Either a b Left Text "Unexpected type" instance PersistFieldSql Coin where sqlType :: Proxy Coin -> SqlType sqlType Proxy Coin _ = SqlType SqlInt64 instance PersistField DeltaCoin where toPersistValue :: DeltaCoin -> PersistValue toPersistValue (DeltaCoin Integer dc) = Int64 -> PersistValue PersistInt64 forall a b. (a -> b) -> a -> b $ forall a b. (Integral a, Num b) => a -> b fromIntegral Integer dc fromPersistValue :: PersistValue -> Either Text DeltaCoin fromPersistValue (PersistInt64 Int64 i64) = forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ Integer -> DeltaCoin DeltaCoin forall a b. (a -> b) -> a -> b $ forall a b. (Integral a, Num b) => a -> b fromIntegral Int64 i64 fromPersistValue PersistValue _ = forall a b. a -> Either a b Left Text "Unexpected type" instance PersistFieldSql DeltaCoin where sqlType :: Proxy DeltaCoin -> SqlType sqlType Proxy DeltaCoin _ = SqlType SqlInt64 newtype Enc a = Enc {forall a. Enc a -> a unEnc :: a} instance (EncCBOR a, DecCBOR a) => PersistField (Enc a) where toPersistValue :: Enc a -> PersistValue toPersistValue = ByteString -> PersistValue PersistByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. EncCBOR a => Version -> a -> ByteString serialize' (forall era. Era era => Version eraProtVerHigh @CurrentEra) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Enc a -> a unEnc fromPersistValue :: PersistValue -> Either Text (Enc a) fromPersistValue = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall a. a -> Enc a Enc forall b c a. (b -> c) -> (a -> b) -> a -> c . forall b. DecCBOR b => PersistValue -> Either Text b decodePersistValue instance (EncCBOR a, DecCBOR a) => PersistFieldSql (Enc a) where sqlType :: Proxy (Enc a) -> SqlType sqlType Proxy (Enc a) _ = SqlType SqlBlob decodePersistValue :: DecCBOR b => PersistValue -> Either T.Text b decodePersistValue :: forall b. DecCBOR b => PersistValue -> Either Text b decodePersistValue (PersistByteString ByteString bs) = case forall a. DecCBOR a => Version -> ByteString -> Either DecoderError a decodeFull' (forall era. Era era => Version eraProtVerHigh @CurrentEra) ByteString bs of Left DecoderError err -> forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b $ Text "Could not decode: " forall a. Semigroup a => a -> a -> a <> String -> Text T.pack (forall a. Show a => a -> String show DecoderError err) Right b v -> forall a b. b -> Either a b Right b v decodePersistValue PersistValue _ = forall a b. a -> Either a b Left Text "Unexpected type" deriving via Enc (KeyHash r) instance Typeable r => PersistField (KeyHash r) deriving via Enc (KeyHash r) instance Typeable r => PersistFieldSql (KeyHash r) deriving via Enc (Credential r) instance Typeable r => PersistField (Credential r) deriving via Enc (Credential r) instance Typeable r => PersistFieldSql (Credential r) deriving via Enc Ptr instance PersistField Ptr deriving via Enc Ptr instance PersistFieldSql Ptr deriving via Enc (ShelleyGovState CurrentEra) instance PersistField (ShelleyGovState CurrentEra) deriving via Enc (ShelleyGovState CurrentEra) instance PersistFieldSql (ShelleyGovState CurrentEra) deriving via Enc (AlonzoTxOut CurrentEra) instance PersistField (AlonzoTxOut CurrentEra) deriving via Enc (AlonzoTxOut CurrentEra) instance PersistFieldSql (AlonzoTxOut CurrentEra) deriving via Enc (BabbageTxOut CurrentEra) instance PersistField (BabbageTxOut CurrentEra) deriving via Enc (BabbageTxOut CurrentEra) instance PersistFieldSql (BabbageTxOut CurrentEra) instance DecCBOR (DState CurrentEra) where decCBOR :: forall s. Decoder s (DState CurrentEra) decCBOR = forall a s. DecShareCBOR a => Decoder s a decNoShareCBOR deriving via Enc (DState CurrentEra) instance PersistField (DState CurrentEra) deriving via Enc (DState CurrentEra) instance PersistFieldSql (DState CurrentEra) deriving via Enc (PState CurrentEra) instance PersistField (PState CurrentEra) deriving via Enc (PState CurrentEra) instance PersistFieldSql (PState CurrentEra) deriving via Enc GenDelegs instance PersistField GenDelegs deriving via Enc GenDelegs instance PersistFieldSql GenDelegs deriving via Enc PoolParams instance PersistField PoolParams deriving via Enc PoolParams instance PersistFieldSql PoolParams instance DecCBOR NonMyopic where decCBOR :: forall s. Decoder s NonMyopic decCBOR = forall a s. DecShareCBOR a => Decoder s a decNoShareCBOR deriving via Enc NonMyopic instance PersistField NonMyopic deriving via Enc NonMyopic instance PersistFieldSql NonMyopic deriving via Enc (PParams CurrentEra) instance PersistField (PParams CurrentEra) deriving via Enc (PParams CurrentEra) instance PersistFieldSql (PParams CurrentEra)