6
6
{-# LANGUAGE UndecidableInstances #-}
7
7
module Cardano.Analysis.API.Context (module Cardano.Analysis.API.Context ) where
8
8
9
- import Cardano.Prelude
9
+ import Cardano.Prelude
10
10
11
- import Control.Monad (fail )
12
-
13
- import Data.Aeson ( FromJSON (.. ), ToJSON (.. ), Value
14
- , withObject , object , (.:) , (.:?) , (.=) , (.!=) )
15
- import Data.Aeson.Key qualified as AE
16
- import Data.Aeson.KeyMap qualified as AE
17
- import Data.Aeson.Types qualified as AE
18
- import Data.Map.Strict qualified as Map
19
- import Data.Text qualified as T
20
- import Data.Time.Clock (UTCTime , NominalDiffTime )
11
+ import Control.Monad (fail )
12
+ import Data.Aeson (FromJSON (.. ), ToJSON (.. ), Value , object , withObject , (.!=) , (.:) ,
13
+ (.:?) , (.=) )
14
+ import qualified Data.Aeson.Key as AE
15
+ import qualified Data.Aeson.KeyMap as AE
16
+ import qualified Data.Aeson.Types as AE
17
+ import qualified Data.Map.Strict as Map
18
+ import qualified Data.Text as T
19
+ import Data.Time.Clock (NominalDiffTime , UTCTime )
21
20
22
21
23
22
-- This is difficult: we have two different genesis-related structures:
@@ -28,8 +27,17 @@ data GenesisSpec
28
27
= GenesisSpec
29
28
{ delegators :: Word64
30
29
, utxo :: Word64
30
+ , dreps :: Word64
31
31
}
32
- deriving (Eq , Generic , Show , ToJSON , FromJSON , NFData )
32
+ deriving (Eq , Generic , Show , ToJSON , NFData )
33
+
34
+ -- support legacy profile content that does not specify DRep count
35
+ instance FromJSON GenesisSpec where
36
+ parseJSON = withObject " profile gensis" $ \ o ->
37
+ GenesisSpec
38
+ <$> o .: " delegators"
39
+ <*> o .: " utxo"
40
+ <*> o .:? " dreps" .!= 0
33
41
34
42
-- | Partial 'Cardano.Ledger.Shelley.Genesis.ShelleyGenesis'
35
43
data Genesis
0 commit comments