{-# OPTIONS_GHC -Wno-orphans #-}
module Lorentz.Contracts.UpgradeableCounterSdu.V2
( CounterSduV
, counterContract
, migration
, counterUpgradeParameters
, counterUpgradeParametersFromV0
, counterRollbackParameters
) where
import Lorentz
import Prelude (Identity)
import Lorentz.Contracts.Upgradeable.Common
import Lorentz.Contracts.Upgradeable.StorageDriven
import Lorentz.Contracts.UpgradeableCounterSdu
import qualified Lorentz.Contracts.UpgradeableCounterSdu.V1 as V1
import Lorentz.UStore
import Lorentz.UStore.Migration
import Util.Named
data UStoreEntrypoints store = UStoreEntrypoints
{ UStoreEntrypoints store -> UStoreEntrypoint store ()
epInc :: UStoreEntrypoint store ()
, UStoreEntrypoints store -> UStoreEntrypoint store ()
epDec :: UStoreEntrypoint store ()
, UStoreEntrypoints store
-> UStoreEntrypoint store (Void_ () Integer)
epGetCounterValue :: UStoreEntrypoint store (Void_ () Integer)
} deriving stock (UStoreEntrypoints store -> UStoreEntrypoints store -> Bool
(UStoreEntrypoints store -> UStoreEntrypoints store -> Bool)
-> (UStoreEntrypoints store -> UStoreEntrypoints store -> Bool)
-> Eq (UStoreEntrypoints store)
forall store.
UStoreEntrypoints store -> UStoreEntrypoints store -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UStoreEntrypoints store -> UStoreEntrypoints store -> Bool
$c/= :: forall store.
UStoreEntrypoints store -> UStoreEntrypoints store -> Bool
== :: UStoreEntrypoints store -> UStoreEntrypoints store -> Bool
$c== :: forall store.
UStoreEntrypoints store -> UStoreEntrypoints store -> Bool
Eq, (forall x.
UStoreEntrypoints store -> Rep (UStoreEntrypoints store) x)
-> (forall x.
Rep (UStoreEntrypoints store) x -> UStoreEntrypoints store)
-> Generic (UStoreEntrypoints store)
forall x.
Rep (UStoreEntrypoints store) x -> UStoreEntrypoints store
forall x.
UStoreEntrypoints store -> Rep (UStoreEntrypoints store) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall store x.
Rep (UStoreEntrypoints store) x -> UStoreEntrypoints store
forall store x.
UStoreEntrypoints store -> Rep (UStoreEntrypoints store) x
$cto :: forall store x.
Rep (UStoreEntrypoints store) x -> UStoreEntrypoints store
$cfrom :: forall store x.
UStoreEntrypoints store -> Rep (UStoreEntrypoints store) x
Generic)
data UStoreTemplate = UStoreTemplate
{
UStoreTemplate -> UStoreField ("i" :! Integer, ())
counterValue :: UStoreField ("i" :! Integer, ())
, UStoreTemplate -> UStoreEntrypoints UStoreTemplate
code :: UStoreEntrypoints UStoreTemplate
} deriving stock (UStoreTemplate -> UStoreTemplate -> Bool
(UStoreTemplate -> UStoreTemplate -> Bool)
-> (UStoreTemplate -> UStoreTemplate -> Bool) -> Eq UStoreTemplate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UStoreTemplate -> UStoreTemplate -> Bool
$c/= :: UStoreTemplate -> UStoreTemplate -> Bool
== :: UStoreTemplate -> UStoreTemplate -> Bool
$c== :: UStoreTemplate -> UStoreTemplate -> Bool
Eq, (forall x. UStoreTemplate -> Rep UStoreTemplate x)
-> (forall x. Rep UStoreTemplate x -> UStoreTemplate)
-> Generic UStoreTemplate
forall x. Rep UStoreTemplate x -> UStoreTemplate
forall x. UStoreTemplate -> Rep UStoreTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UStoreTemplate x -> UStoreTemplate
$cfrom :: forall x. UStoreTemplate -> Rep UStoreTemplate x
Generic)
type UStorage = UStore UStoreTemplate
type Interface = UStoreEpInterface UStoreTemplate
instance KnownContractVersion (CounterSduV 2) where
type VerInterface (CounterSduV 2) = Interface
type VerUStoreTemplate (CounterSduV 2) = UStoreTemplate
type VerPermanent (CounterSduV 2) = Permanent
addInt :: Integer -> Entrypoint () UStorage
addInt :: Integer -> Entrypoint () UStorage
addInt Integer
x = do
forall (s :: [*]). (() : s) :-> s
forall a (s :: [*]). (a : s) :-> s
drop @()
Label "counterValue"
-> '[UStorage]
:-> '[GetUStoreField UStoreTemplate "counterValue", UStorage]
forall store (name :: Symbol) (s :: [*]).
FieldAccessC store name =>
Label name
-> (UStore store : s)
:-> (GetUStoreField store name : UStore store : s)
ustoreGetField Label "counterValue"
forall a. IsLabel "counterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#counterValue
Label "i"
-> '[("i" :! Integer, ()), UStorage]
:-> '[GetFieldType ("i" :! Integer, ()) "i", ("i" :! Integer, ()),
UStorage]
forall dt (name :: Symbol) (st :: [*]).
InstrGetFieldC dt name =>
Label name -> (dt : st) :-> (GetFieldType dt name : dt : st)
getField Label "i"
forall a. IsLabel "i" a => a
forall (x :: Symbol) a. IsLabel x a => a
#i
Integer
-> '[Integer, ("i" :! Integer, ()), UStorage]
:-> '[Integer, Integer, ("i" :! Integer, ()), UStorage]
forall t (s :: [*]). NiceConstant t => t -> s :-> (t : s)
push Integer
x
'[Integer, Integer, ("i" :! Integer, ()), UStorage]
:-> '[Integer, ("i" :! Integer, ()), UStorage]
forall n m (s :: [*]).
ArithOpHs Add n m =>
(n : m : s) :-> (ArithResHs Add n m : s)
add
Label "i"
-> '[GetFieldType ("i" :! Integer, ()) "i", ("i" :! Integer, ()),
UStorage]
:-> '[("i" :! Integer, ()), UStorage]
forall dt (name :: Symbol) (st :: [*]).
InstrSetFieldC dt name =>
Label name -> (GetFieldType dt name : dt : st) :-> (dt : st)
setField Label "i"
forall a. IsLabel "i" a => a
forall (x :: Symbol) a. IsLabel x a => a
#i
Label "counterValue"
-> '[GetUStoreField UStoreTemplate "counterValue", UStorage]
:-> '[UStorage]
forall store (name :: Symbol) (s :: [*]).
FieldAccessC store name =>
Label name
-> (GetUStoreField store name : UStore store : s)
:-> (UStore store : s)
ustoreSetField Label "counterValue"
forall a. IsLabel "counterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#counterValue
'[UStorage] :-> '[List Operation, UStorage]
forall p (s :: [*]). KnownValue p => s :-> (List p : s)
nil; '[List Operation, UStorage] :-> '[(List Operation, UStorage)]
forall a b (s :: [*]). (a : b : s) :-> ((a, b) : s)
pair
runInc :: Entrypoint () UStorage
runInc :: Entrypoint () UStorage
runInc = Integer -> Entrypoint () UStorage
addInt Integer
1
runDec :: Entrypoint () UStorage
runDec :: Entrypoint () UStorage
runDec = Integer -> Entrypoint () UStorage
addInt (Integer
-1)
runGetCounterValue :: Entrypoint (Void_ () Integer) UStorage
runGetCounterValue :: Entrypoint (Void_ () Integer) UStorage
runGetCounterValue = ('[(), UStorage] :-> '[Integer])
-> Entrypoint (Void_ () Integer) UStorage
forall a b (s :: [*]) (s' :: [*]) (anything :: [*]).
(IsError (VoidResult b), NiceConstant b) =>
((a : s) :-> (b : s')) -> (Void_ a b : s) :-> anything
void_ (('[(), UStorage] :-> '[Integer])
-> Entrypoint (Void_ () Integer) UStorage)
-> ('[(), UStorage] :-> '[Integer])
-> Entrypoint (Void_ () Integer) UStorage
forall a b. (a -> b) -> a -> b
$ do
forall (s :: [*]). (() : s) :-> s
forall a (s :: [*]). (a : s) :-> s
drop @()
Label "counterValue"
-> '[UStorage]
:-> '[GetUStoreField UStoreTemplate "counterValue", UStorage]
forall store (name :: Symbol) (s :: [*]).
FieldAccessC store name =>
Label name
-> (UStore store : s)
:-> (GetUStoreField store name : UStore store : s)
ustoreGetField Label "counterValue"
forall a. IsLabel "counterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#counterValue
Label "i"
-> '[("i" :! Integer, ()), UStorage]
:-> '[GetFieldType ("i" :! Integer, ()) "i", UStorage]
forall dt (name :: Symbol) (st :: [*]).
InstrGetFieldC dt name =>
Label name -> (dt : st) :-> (GetFieldType dt name : st)
toField Label "i"
forall a. IsLabel "i" a => a
forall (x :: Symbol) a. IsLabel x a => a
#i
('[UStorage] :-> '[]) -> '[Integer, UStorage] :-> '[Integer]
forall a (s :: [*]) (s' :: [*]).
HasCallStack =>
(s :-> s') -> (a : s) :-> (a : s')
dip '[UStorage] :-> '[]
forall a (s :: [*]). (a : s) :-> s
drop
counterContract :: UContractRouter (CounterSduV 2)
counterContract :: UContractRouter (CounterSduV 2)
counterContract = SduFallback (VerUStoreTemplate (CounterSduV 2))
-> UContractRouter (CounterSduV 2)
forall (ver :: VersionKind).
Typeable (VerUStoreTemplate ver) =>
SduFallback (VerUStoreTemplate ver) -> UContractRouter ver
mkSduContract SduFallback (VerUStoreTemplate (CounterSduV 2))
forall store. SduFallback store
sduFallbackFail
permImpl :: PermanentImpl (CounterSduV 2)
permImpl :: PermanentImpl (CounterSduV 2)
permImpl = IsoRecTuple
(Rec
(CaseClauseL '[UStorage] '[(List Operation, UStorage)])
'[ 'CaseClauseParam "GetCounter" ('OneField (Void_ () Integer)),
'CaseClauseParam "GetNothing" ('OneField Empty)])
-> PermanentImpl (CounterSduV 2)
forall (ver :: VersionKind) dt (out :: [*]) (inp :: [*]) clauses.
(CaseTC dt out inp clauses,
DocumentEntrypoints PermanentEntrypointsKind dt,
dt ~ VerPermanent ver, inp ~ '[VerUStore ver],
out ~ ContractOut (VerUStore ver)) =>
IsoRecTuple clauses -> PermanentImpl ver
mkSmallPermanentImpl
( Label "cGetCounter"
forall a. IsLabel "cGetCounter" a => a
forall (x :: Symbol) a. IsLabel x a => a
#cGetCounter Label "cGetCounter"
-> Entrypoint (Void_ () Integer) UStorage
-> CaseClauseL
'[UStorage]
'[(List Operation, UStorage)]
('CaseClauseParam "GetCounter" ('OneField (Void_ () Integer)))
forall (name :: Symbol) body clause.
CaseArrow name body clause =>
Label name -> body -> clause
/-> ('[(), UStorage] :-> '[Integer])
-> Entrypoint (Void_ () Integer) UStorage
forall a b (s :: [*]) (s' :: [*]) (anything :: [*]).
(IsError (VoidResult b), NiceConstant b) =>
((a : s) :-> (b : s')) -> (Void_ a b : s) :-> anything
void_ (('[(), UStorage] :-> '[Integer])
-> Entrypoint (Void_ () Integer) UStorage)
-> ('[(), UStorage] :-> '[Integer])
-> Entrypoint (Void_ () Integer) UStorage
forall a b. (a -> b) -> a -> b
$ do
forall (s :: [*]). (() : s) :-> s
forall a (s :: [*]). (a : s) :-> s
drop @(); Label "counterValue"
-> '[UStorage] :-> '[GetUStoreField UStoreTemplate "counterValue"]
forall store (name :: Symbol) (s :: [*]).
FieldAccessC store name =>
Label name
-> (UStore store : s) :-> (GetUStoreField store name : s)
ustoreToField Label "counterValue"
forall a. IsLabel "counterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#counterValue; Label "i"
-> '[("i" :! Integer, ())]
:-> '[GetFieldType ("i" :! Integer, ()) "i"]
forall dt (name :: Symbol) (st :: [*]).
InstrGetFieldC dt name =>
Label name -> (dt : st) :-> (GetFieldType dt name : st)
toField Label "i"
forall a. IsLabel "i" a => a
forall (x :: Symbol) a. IsLabel x a => a
#i
, Label "cGetNothing"
forall a. IsLabel "cGetNothing" a => a
forall (x :: Symbol) a. IsLabel x a => a
#cGetNothing Label "cGetNothing"
-> ('[Empty, UStorage] :-> '[(List Operation, UStorage)])
-> CaseClauseL
'[UStorage]
'[(List Operation, UStorage)]
('CaseClauseParam "GetNothing" ('OneField Empty))
forall (name :: Symbol) body clause.
CaseArrow name body clause =>
Label name -> body -> clause
/-> '[Empty, UStorage] :-> '[(List Operation, UStorage)]
forall (s :: [*]) (s' :: [*]). (Empty : s) :-> s'
absurd_
)
mkStorage :: UStoreTemplate
mkStorage :: UStoreTemplate
mkStorage = UStoreTemplate :: UStoreField ("i" :! Integer, ())
-> UStoreEntrypoints UStoreTemplate -> UStoreTemplate
UStoreTemplate
{ counterValue :: UStoreField ("i" :! Integer, ())
counterValue = ("i" :! Integer, ()) -> UStoreField ("i" :! Integer, ())
forall (m :: UStoreMarkerType) v. v -> UStoreFieldExt m v
UStoreField (Name "i"
forall a. IsLabel "i" a => a
forall (x :: Symbol) a. IsLabel x a => a
#i Name "i" -> Integer -> "i" :! Integer
forall (name :: Symbol) a. Name name -> a -> NamedF Identity a name
.! Integer
0, ())
, code :: UStoreEntrypoints UStoreTemplate
code = UStoreEntrypoints :: forall store.
UStoreEntrypoint store ()
-> UStoreEntrypoint store ()
-> UStoreEntrypoint store (Void_ () Integer)
-> UStoreEntrypoints store
UStoreEntrypoints
{ epInc :: UStoreEntrypoint UStoreTemplate ()
epInc = Entrypoint () UStorage -> UStoreEntrypoint UStoreTemplate ()
forall arg store.
NiceUnpackedValue arg =>
Entrypoint arg (UStore store) -> UStoreEntrypoint store arg
mkUStoreEntrypoint Entrypoint () UStorage
runInc
, epDec :: UStoreEntrypoint UStoreTemplate ()
epDec = Entrypoint () UStorage -> UStoreEntrypoint UStoreTemplate ()
forall arg store.
NiceUnpackedValue arg =>
Entrypoint arg (UStore store) -> UStoreEntrypoint store arg
mkUStoreEntrypoint Entrypoint () UStorage
runDec
, epGetCounterValue :: UStoreEntrypoint UStoreTemplate (Void_ () Integer)
epGetCounterValue = Entrypoint (Void_ () Integer) UStorage
-> UStoreEntrypoint UStoreTemplate (Void_ () Integer)
forall arg store.
NiceUnpackedValue arg =>
Entrypoint arg (UStore store) -> UStoreEntrypoint store arg
mkUStoreEntrypoint Entrypoint (Void_ () Integer) UStorage
runGetCounterValue
}
}
migration :: UStoreMigration (VerUStoreTemplate (CounterSduV 1)) UStoreTemplate
migration :: UStoreMigration (VerUStoreTemplate (CounterSduV 1)) UStoreTemplate
migration = Lambda
(MUStore
UStoreTemplate
UStoreTemplate
(BuildDiff UStoreTemplate UStoreTemplate)
'[])
(MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epInc", "epAdd", "counterValue",
"counterValue"])
-> UStoreMigration UStoreTemplate UStoreTemplate
forall oldTempl newTempl (_1 :: [Symbol]).
Lambda
(MUStore oldTempl newTempl (BuildDiff oldTempl newTempl) '[])
(MUStore oldTempl newTempl '[] _1)
-> UStoreMigration oldTempl newTempl
mkUStoreMigration (Lambda
(MUStore
UStoreTemplate
UStoreTemplate
(BuildDiff UStoreTemplate UStoreTemplate)
'[])
(MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epInc", "epAdd", "counterValue",
"counterValue"])
-> UStoreMigration UStoreTemplate UStoreTemplate)
-> Lambda
(MUStore
UStoreTemplate
UStoreTemplate
(BuildDiff UStoreTemplate UStoreTemplate)
'[])
(MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epInc", "epAdd", "counterValue",
"counterValue"])
-> UStoreMigration UStoreTemplate UStoreTemplate
forall a b. (a -> b) -> a -> b
$ do
Label "counterValue"
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'[]]
:-> '[Natural,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy (newDiff :: [DiffItem])
(marker :: UStoreMarkerType) (s :: [*]).
('(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcRemove field diff,
HasUField field fieldTy oldTempl,
RequireUntouched field (IsElem field touched)) =>
Label field
-> (MUStore oldTempl newTempl diff touched : s)
:-> (fieldTy
: MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateExtractField Label "counterValue"
forall a. IsLabel "counterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#counterValue
'[Natural,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
:-> '[Integer,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
forall i (s :: [*]).
ToIntegerArithOpHs i =>
(i : s) :-> (Integer : s)
int; Label "i"
-> '[Integer,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
:-> '["i" :! Integer,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
forall (name :: Symbol) a (s :: [*]).
Label name -> (a : s) :-> (NamedF Identity a name : s)
toNamed Label "i"
forall a. IsLabel "i" a => a
forall (x :: Symbol) a. IsLabel x a => a
#i
'["i" :! Integer,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
:-> '[(), "i" :! Integer,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
forall (s :: [*]). s :-> (() : s)
unit; '[(), "i" :! Integer,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
:-> '["i" :! Integer, (),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
forall a b (s :: [*]). (a : b : s) :-> (b : a : s)
swap; '["i" :! Integer, (),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
:-> '[("i" :! Integer, ()),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
forall a b (s :: [*]). (a : b : s) :-> ((a, b) : s)
pair
Label "counterValue"
-> '[("i" :! Integer, ()),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue", "counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy (newDiff :: [DiffItem])
(marker :: UStoreMarkerType) (s :: [*]).
('(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcAdd field diff,
HasUField field fieldTy newTempl) =>
Label field
-> (fieldTy : MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateAddField Label "counterValue"
forall a. IsLabel "counterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#counterValue
Label "epAdd"
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["counterValue", "counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epAdd", "counterValue", "counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy (newDiff :: [DiffItem])
(marker :: UStoreMarkerType) (s :: [*]).
('(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcRemove field diff,
HasUField field fieldTy oldTempl) =>
Label field
-> (MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateRemoveField Label "epAdd"
forall a. IsLabel "epAdd" a => a
forall (x :: Symbol) a. IsLabel x a => a
#epAdd
SduEntrypoint UStoreTemplate ()
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epAdd", "counterValue", "counterValue"]]
:-> '[SduEntrypoint UStoreTemplate (),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epAdd", "counterValue", "counterValue"]]
forall t (s :: [*]). NiceConstant t => t -> s :-> (t : s)
push (Entrypoint () UStorage -> SduEntrypoint UStoreTemplate ()
forall arg store.
NiceUnpackedValue arg =>
Entrypoint arg (UStore store) -> SduEntrypoint store arg
mkSduEntrypoint Entrypoint () UStorage
runInc)
Label "epInc"
-> '[SduEntrypoint UStoreTemplate (),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epAdd", "counterValue", "counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epInc", "epAdd", "counterValue", "counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy oldFieldTy
(marker :: UStoreMarkerType) (oldMarker :: UStoreMarkerType)
(newDiff :: [DiffItem]) (newDiff0 :: [DiffItem]) (s :: [*]).
('(UStoreFieldExt oldMarker oldFieldTy, newDiff0)
~ CoverDiff 'DcRemove field diff,
'(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcAdd field newDiff0,
HasUField field fieldTy newTempl) =>
Label field
-> (fieldTy : MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateOverwriteField Label "epInc"
forall a. IsLabel "epInc" a => a
forall (x :: Symbol) a. IsLabel x a => a
#epInc
SduEntrypoint UStoreTemplate ()
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epInc", "epAdd", "counterValue", "counterValue"]]
:-> '[SduEntrypoint UStoreTemplate (),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epInc", "epAdd", "counterValue", "counterValue"]]
forall t (s :: [*]). NiceConstant t => t -> s :-> (t : s)
push (Entrypoint () UStorage -> SduEntrypoint UStoreTemplate ()
forall arg store.
NiceUnpackedValue arg =>
Entrypoint arg (UStore store) -> SduEntrypoint store arg
mkSduEntrypoint Entrypoint () UStorage
runDec)
Label "epDec"
-> '[SduEntrypoint UStoreTemplate (),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epInc", "epAdd", "counterValue", "counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epDec", "epInc", "epAdd", "counterValue", "counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy (newDiff :: [DiffItem])
(marker :: UStoreMarkerType) (s :: [*]).
('(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcAdd field diff,
HasUField field fieldTy newTempl) =>
Label field
-> (fieldTy : MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateAddField Label "epDec"
forall a. IsLabel "epDec" a => a
forall (x :: Symbol) a. IsLabel x a => a
#epDec
SduEntrypoint UStoreTemplate (Void_ () Integer)
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epDec", "epInc", "epAdd", "counterValue", "counterValue"]]
:-> '[SduEntrypoint UStoreTemplate (Void_ () Integer),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epDec", "epInc", "epAdd", "counterValue", "counterValue"]]
forall t (s :: [*]). NiceConstant t => t -> s :-> (t : s)
push (Entrypoint (Void_ () Integer) UStorage
-> SduEntrypoint UStoreTemplate (Void_ () Integer)
forall arg store.
NiceUnpackedValue arg =>
Entrypoint arg (UStore store) -> SduEntrypoint store arg
mkSduEntrypoint Entrypoint (Void_ () Integer) UStorage
runGetCounterValue)
Label "epGetCounterValue"
-> '[SduEntrypoint UStoreTemplate (Void_ () Integer),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer))),
'( 'ToDel,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural))))]
'["epDec", "epInc", "epAdd", "counterValue", "counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epInc", "epAdd", "counterValue",
"counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy oldFieldTy
(marker :: UStoreMarkerType) (oldMarker :: UStoreMarkerType)
(newDiff :: [DiffItem]) (newDiff0 :: [DiffItem]) (s :: [*]).
('(UStoreFieldExt oldMarker oldFieldTy, newDiff0)
~ CoverDiff 'DcRemove field diff,
'(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcAdd field newDiff0,
HasUField field fieldTy newTempl) =>
Label field
-> (fieldTy : MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateOverwriteField Label "epGetCounterValue"
forall a. IsLabel "epGetCounterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#epGetCounterValue
'[MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epInc", "epAdd", "counterValue",
"counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epInc", "epAdd", "counterValue",
"counterValue"]]
forall a. MigrationFinishCheckPosition a => a
migrationFinish
counterUpgradeParameters :: EpwUpgradeParameters Identity (CounterSduV 1) (CounterSduV 2)
counterUpgradeParameters :: EpwUpgradeParameters Identity (CounterSduV 1) (CounterSduV 2)
counterUpgradeParameters = EpwUpgradeParameters :: forall (t :: * -> *) (curVer :: VersionKind)
(newVer :: VersionKind) code codePerm.
(Traversable t, KnownContractVersion curVer,
KnownContractVersion newVer,
RequireSamePermanents (VerPermanent curVer) (VerPermanent newVer),
RecognizeUpgPiece (UContractRouterUpdate curVer newVer) code,
RecognizeUpgPiece (PermanentImplUpdate curVer newVer) codePerm) =>
t (MigrationScript
(VerUStoreTemplate curVer) (VerUStoreTemplate newVer))
-> code -> codePerm -> EpwUpgradeParameters t curVer newVer
EpwUpgradeParameters
{ upMigrationScripts :: Identity
(MigrationScript
(VerUStoreTemplate (CounterSduV 1))
(VerUStoreTemplate (CounterSduV 2)))
upMigrationScripts = UStoreMigration UStoreTemplate UStoreTemplate
-> Identity (MigrationScript UStoreTemplate UStoreTemplate)
forall os ns.
UStoreMigration os ns -> Identity (MigrationScript os ns)
migrationToScriptI UStoreMigration (VerUStoreTemplate (CounterSduV 1)) UStoreTemplate
UStoreMigration UStoreTemplate UStoreTemplate
migration
, upNewCode :: UContractRouter (CounterSduV 2)
upNewCode = UContractRouter (CounterSduV 2)
counterContract
, upNewPermCode :: PermanentImpl (CounterSduV 2)
upNewPermCode = PermanentImpl (CounterSduV 2)
permImpl
}
counterUpgradeParametersFromV0 :: EpwUpgradeParameters Identity (CounterSduV 0) (CounterSduV 2)
counterUpgradeParametersFromV0 :: EpwUpgradeParameters Identity (CounterSduV 0) (CounterSduV 2)
counterUpgradeParametersFromV0 = EpwUpgradeParameters :: forall (t :: * -> *) (curVer :: VersionKind)
(newVer :: VersionKind) code codePerm.
(Traversable t, KnownContractVersion curVer,
KnownContractVersion newVer,
RequireSamePermanents (VerPermanent curVer) (VerPermanent newVer),
RecognizeUpgPiece (UContractRouterUpdate curVer newVer) code,
RecognizeUpgPiece (PermanentImplUpdate curVer newVer) codePerm) =>
t (MigrationScript
(VerUStoreTemplate curVer) (VerUStoreTemplate newVer))
-> code -> codePerm -> EpwUpgradeParameters t curVer newVer
EpwUpgradeParameters
{ upMigrationScripts :: Identity
(MigrationScript
(VerUStoreTemplate (CounterSduV 0))
(VerUStoreTemplate (CounterSduV 2)))
upMigrationScripts = UStoreMigration () UStoreTemplate
-> Identity (MigrationScript () UStoreTemplate)
forall os ns.
UStoreMigration os ns -> Identity (MigrationScript os ns)
migrationToScriptI (UStoreMigration () UStoreTemplate
-> Identity (MigrationScript () UStoreTemplate))
-> UStoreMigration () UStoreTemplate
-> Identity (MigrationScript () UStoreTemplate)
forall a b. (a -> b) -> a -> b
$ UStoreTemplate -> UStoreMigration () UStoreTemplate
forall template.
UStoreTraversable FillUStoreTW template =>
template -> UStoreMigration () template
fillUStore UStoreTemplate
mkStorage
, upNewCode :: UContractRouter (CounterSduV 2)
upNewCode = UContractRouter (CounterSduV 2)
counterContract
, upNewPermCode :: PermanentImpl (CounterSduV 2)
upNewPermCode = PermanentImpl (CounterSduV 2)
permImpl
}
rollback :: UStoreMigration UStoreTemplate (VerUStoreTemplate (CounterSduV 1))
rollback :: UStoreMigration UStoreTemplate (VerUStoreTemplate (CounterSduV 1))
rollback = Lambda
(MUStore
UStoreTemplate
UStoreTemplate
(BuildDiff UStoreTemplate UStoreTemplate)
'[])
(MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epAdd", "counterValue",
"counterValue"])
-> UStoreMigration UStoreTemplate UStoreTemplate
forall oldTempl newTempl (_1 :: [Symbol]).
Lambda
(MUStore oldTempl newTempl (BuildDiff oldTempl newTempl) '[])
(MUStore oldTempl newTempl '[] _1)
-> UStoreMigration oldTempl newTempl
mkUStoreMigration (Lambda
(MUStore
UStoreTemplate
UStoreTemplate
(BuildDiff UStoreTemplate UStoreTemplate)
'[])
(MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epAdd", "counterValue",
"counterValue"])
-> UStoreMigration UStoreTemplate UStoreTemplate)
-> Lambda
(MUStore
UStoreTemplate
UStoreTemplate
(BuildDiff UStoreTemplate UStoreTemplate)
'[])
(MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epAdd", "counterValue",
"counterValue"])
-> UStoreMigration UStoreTemplate UStoreTemplate
forall a b. (a -> b) -> a -> b
$ do
Label "counterValue"
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("counterValue", UStoreField ("i" :! Integer, ()))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'[]]
:-> '[("i" :! Integer, ()),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy (newDiff :: [DiffItem])
(marker :: UStoreMarkerType) (s :: [*]).
('(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcRemove field diff,
HasUField field fieldTy oldTempl,
RequireUntouched field (IsElem field touched)) =>
Label field
-> (MUStore oldTempl newTempl diff touched : s)
:-> (fieldTy
: MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateExtractField Label "counterValue"
forall a. IsLabel "counterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#counterValue
Label "i"
-> '[("i" :! Integer, ()),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue"]]
:-> '[GetFieldType ("i" :! Integer, ()) "i",
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue"]]
forall dt (name :: Symbol) (st :: [*]).
InstrGetFieldC dt name =>
Label name -> (dt : st) :-> (GetFieldType dt name : st)
toField Label "i"
forall a. IsLabel "i" a => a
forall (x :: Symbol) a. IsLabel x a => a
#i; '[Integer,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue"]]
:-> '[Maybe Natural,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue"]]
forall (s :: [*]). (Integer : s) :-> (Maybe Natural : s)
isNat
MText
-> '[Maybe Natural,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue"]]
:-> '[Natural,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue"]]
forall err a (s :: [*]).
IsError err =>
err -> (Maybe a : s) :-> (a : s)
assertSome [mt|Rollback is impossible|]
Label "counterValue"
-> '[Natural,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("counterValue", UStoreFieldExt UMarkerPlainField Natural)),
'( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue", "counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy (newDiff :: [DiffItem])
(marker :: UStoreMarkerType) (s :: [*]).
('(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcAdd field diff,
HasUField field fieldTy newTempl) =>
Label field
-> (fieldTy : MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateAddField Label "counterValue"
forall a. IsLabel "counterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#counterValue
SduEntrypoint UStoreTemplate Natural
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue", "counterValue"]]
:-> '[SduEntrypoint UStoreTemplate Natural,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue", "counterValue"]]
forall t (s :: [*]). NiceConstant t => t -> s :-> (t : s)
push (Entrypoint Natural (UStore UStoreTemplate)
-> SduEntrypoint UStoreTemplate Natural
forall arg store.
NiceUnpackedValue arg =>
Entrypoint arg (UStore store) -> SduEntrypoint store arg
mkSduEntrypoint Entrypoint Natural (UStore UStoreTemplate)
V1.runAdd)
Label "epAdd"
-> '[SduEntrypoint UStoreTemplate Natural,
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epAdd",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate Natural))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["counterValue", "counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["epAdd", "counterValue", "counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy (newDiff :: [DiffItem])
(marker :: UStoreMarkerType) (s :: [*]).
('(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcAdd field diff,
HasUField field fieldTy newTempl) =>
Label field
-> (fieldTy : MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateAddField Label "epAdd"
forall a. IsLabel "epAdd" a => a
forall (x :: Symbol) a. IsLabel x a => a
#epAdd
Label "epInc"
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epInc",
UStoreFieldExt
UMarkerEntrypoint (SduEntrypoint UStoreTemplate ()))),
'( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epInc", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["epAdd", "counterValue", "counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["epAdd", "counterValue", "counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) (newDiff :: [DiffItem])
(newDiff0 :: [DiffItem]) _1 _2 (s :: [*]).
('(_1, newDiff0) ~ CoverDiff 'DcRemove field diff,
'(_2, newDiff) ~ CoverDiff 'DcAdd field newDiff0) =>
Label field
-> (MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff touched : s)
migrateCoerceUnsafe Label "epInc"
forall a. IsLabel "epInc" a => a
forall (x :: Symbol) a. IsLabel x a => a
#epInc
Label "epDec"
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel, '("epDec", UStoreEntrypoint UStoreTemplate ())),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["epAdd", "counterValue", "counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["epDec", "epAdd", "counterValue", "counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy (newDiff :: [DiffItem])
(marker :: UStoreMarkerType) (s :: [*]).
('(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcRemove field diff,
HasUField field fieldTy oldTempl) =>
Label field
-> (MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateRemoveField Label "epDec"
forall a. IsLabel "epDec" a => a
forall (x :: Symbol) a. IsLabel x a => a
#epDec
SduEntrypoint UStoreTemplate (Void_ () Natural)
-> '[MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["epDec", "epAdd", "counterValue", "counterValue"]]
:-> '[SduEntrypoint UStoreTemplate (Void_ () Natural),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["epDec", "epAdd", "counterValue", "counterValue"]]
forall t (s :: [*]). NiceConstant t => t -> s :-> (t : s)
push (Entrypoint (Void_ () Natural) (UStore UStoreTemplate)
-> SduEntrypoint UStoreTemplate (Void_ () Natural)
forall arg store.
NiceUnpackedValue arg =>
Entrypoint arg (UStore store) -> SduEntrypoint store arg
mkSduEntrypoint Entrypoint (Void_ () Natural) (UStore UStoreTemplate)
V1.runGetCounterValue)
Label "epGetCounterValue"
-> '[SduEntrypoint UStoreTemplate (Void_ () Natural),
MUStore
UStoreTemplate
UStoreTemplate
'[ '( 'ToAdd,
'("epGetCounterValue",
UStoreFieldExt
UMarkerEntrypoint
(SduEntrypoint UStoreTemplate (Void_ () Natural)))),
'( 'ToDel,
'("epGetCounterValue",
UStoreEntrypoint UStoreTemplate (Void_ () Integer)))]
'["epDec", "epAdd", "counterValue", "counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epAdd", "counterValue",
"counterValue"]]
forall (field :: Symbol) oldTempl newTempl (diff :: [DiffItem])
(touched :: [Symbol]) fieldTy oldFieldTy
(marker :: UStoreMarkerType) (oldMarker :: UStoreMarkerType)
(newDiff :: [DiffItem]) (newDiff0 :: [DiffItem]) (s :: [*]).
('(UStoreFieldExt oldMarker oldFieldTy, newDiff0)
~ CoverDiff 'DcRemove field diff,
'(UStoreFieldExt marker fieldTy, newDiff)
~ CoverDiff 'DcAdd field newDiff0,
HasUField field fieldTy newTempl) =>
Label field
-> (fieldTy : MUStore oldTempl newTempl diff touched : s)
:-> (MUStore oldTempl newTempl newDiff (field : touched) : s)
migrateOverwriteField Label "epGetCounterValue"
forall a. IsLabel "epGetCounterValue" a => a
forall (x :: Symbol) a. IsLabel x a => a
#epGetCounterValue
'[MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epAdd", "counterValue",
"counterValue"]]
:-> '[MUStore
UStoreTemplate
UStoreTemplate
'[]
'["epGetCounterValue", "epDec", "epAdd", "counterValue",
"counterValue"]]
forall a. MigrationFinishCheckPosition a => a
migrationFinish
counterRollbackParameters :: EpwUpgradeParameters Identity (CounterSduV 2) (CounterSduV 1)
counterRollbackParameters :: EpwUpgradeParameters Identity (CounterSduV 2) (CounterSduV 1)
counterRollbackParameters = EpwUpgradeParameters :: forall (t :: * -> *) (curVer :: VersionKind)
(newVer :: VersionKind) code codePerm.
(Traversable t, KnownContractVersion curVer,
KnownContractVersion newVer,
RequireSamePermanents (VerPermanent curVer) (VerPermanent newVer),
RecognizeUpgPiece (UContractRouterUpdate curVer newVer) code,
RecognizeUpgPiece (PermanentImplUpdate curVer newVer) codePerm) =>
t (MigrationScript
(VerUStoreTemplate curVer) (VerUStoreTemplate newVer))
-> code -> codePerm -> EpwUpgradeParameters t curVer newVer
EpwUpgradeParameters
{ upMigrationScripts :: Identity
(MigrationScript
(VerUStoreTemplate (CounterSduV 2))
(VerUStoreTemplate (CounterSduV 1)))
upMigrationScripts = UStoreMigration UStoreTemplate UStoreTemplate
-> Identity (MigrationScript UStoreTemplate UStoreTemplate)
forall os ns.
UStoreMigration os ns -> Identity (MigrationScript os ns)
migrationToScriptI UStoreMigration UStoreTemplate (VerUStoreTemplate (CounterSduV 1))
UStoreMigration UStoreTemplate UStoreTemplate
rollback
, upNewCode :: UContractRouter (CounterSduV 1)
upNewCode = UContractRouter (CounterSduV 1)
V1.counterContract
, upNewPermCode :: PermanentImpl (CounterSduV 1)
upNewPermCode = PermanentImpl (CounterSduV 1)
V1.permImpl
}