The log manager handles the past migrations and seeding of tables.
All of the data is stored in the regular WP Options table (not auto-loaded).
Public Methods
__construct( string $option_key = null )
@param string|null $option_key The option key to hold the log in options.
$log_manager = new PinkCrab\DB_Migration\Log\Migration_Log_Manager('acme_migrations');
// Its also possible to use the Factory
$manager = PinkCrab\DB_Migration\Factory::migration_log('acme_migrations');
If no key is passed, pinkcrab_migration_log is used as a fallback
has_migration( Schema $schema ): bool
@param PinkCrab\Table_Builder\Schema $schema
@return bool
Checks if a schema has been migrated or not yet.
$log_manager = new Migration_Log_Manager('acme_migrations');
if(!$log_manager->has_migration($some_schema)){
// Doesn't exist, do something!
}
get_log_key(): string
@return string
Gets the log manager option key.
$log_manager = new Migration_Log_Manager('acme_migrations');
$log_manager->get_log_key(); // acme_migrations
get_migration( Schema $schema ): ?Migration_Log
@param Schema $schema
@return PinkCrab\DB_Migration\Log\Migration_Log|null
Returns the Migration Log details for an existing schema, or null if not migrated.
$log_manager = new Migration_Log_Manager('acme_migrations');
$migration = $log_manager->get_migration($some_schema);
// Log methods.
$migration->table_name(); // (string) The table name.
$migration->schema_hash(); // (string) The migrations unique hash.
$migration->updated_on(); // (DateTimeImmutable) Date the migration was last updated or created if not updated.
$migration->created_on(); // (DateTimeImmutable) Date the migration was created.
$migration->is_seeded(); // (bool) If the table has been seeded.
can_migrate( Schema $schema ): bool
@param PinkCrab\Table_Builder\Schema $schema
@return bool
Checks if a schema can be migrated, or if it been migrated already (based on its hash)
$log_manager = new Migration_Log_Manager('acme_migrations');
if($log_manager->can_migration($some_schema)){
// do it
}
upsert_migration( Schema $schema ): Migration_Log_Manager
@param PinkCrab\Table_Builder\Schema $schema
@return PinkCrab\DB_Migration\Log\Migration_Log_Manager
Either creates a new record of a migration or updates the existing record.
$log_manager = new Migration_Log_Manager('acme_migrations');
$log_manager->upsert_migration($some_schema);
remove_migration( Schema $schema ): Migration_Log_Manager
@param PinkCrab\Table_Builder\Schema $schema
@return PinkCrab\DB_Migration\Log\Migration_Log_Manager
Removes a schema from the log.
$log_manager = new Migration_Log_Manager('acme_migrations');
$log_manager->remove_migration($some_schema);
mark_table_seeded( Schema $schema ): Migration_Log_Manager
@param PinkCrab\Table_Builder\Schema $schema
@return PinkCrab\DB_Migration\Log\Migration_Log_Manager
Marks a table as seeded in the log.
$log_manager = new Migration_Log_Manager('acme_migrations');
$log_manager->mark_table_seeded($some_schema);
clear_log(): void
@return void
Clears all log/deletes the options entry
$log_manager = new Migration_Log_Manager('acme_migrations');
$log_manager->clear_log();