use crateResult;
use crateMigrationFile;
use crateAppliedMigration;
/// Abstraction over a database connection capable of applying migrations.
///
/// Implementations are responsible for:
/// - Creating the state table if it does not already exist
/// - Listing the currently-applied migrations
/// - Applying a single migration file and recording state in one transaction