A Migration is a four level monad stack consisting of:
WriterT [Text]representing a log of errors in the migrations.WriterT CautiousMigrationrepresenting a list of migrations to run, along with whether or not they are safe.ReaderT SqlBackend, aka the SqlPersistT transformer for database interop.IOfor arbitrary IO.