happs-tutorial-0.8.1: src/migrationexample/CreateState1.hs
import StateVersions.AppState1
import Happstack.State
import System.Environment
entryPoint :: Proxy AppState
entryPoint = Proxy
{- First, we're using withProgName "migration-demo" with both CreateState1 and MigrateState2
in order to make sure that both executables are looking at the same state
under _local.
Second, in this example we're using the state
contained in AppState1, which is just
AppState Int, and we increment it before creating
our checkpoint.
Why create a checkpoint? Well that goes to something
fairly important about how migrations work. If you
_don't_ create a checkpoint, then when you start
MigrateState2.hs it will attempt to replay back the
set of events recorded in _local and it won't be able
to handle them because the actual state module, and thus
namespace, has changed. Instead, we need to create
a checkpoint and serialize the actual state itself
rather than the events. The Migrate instance will
then handle the rest.
-}
main :: IO ()
main = withProgName "migration-demo" $ do
control <- startSystemState entryPoint
update IncVal
query AskVal >>= print
createCheckpoint control
shutdownSystem control