TenantMigrateCommand
extends Command
in package
Runs tenant application and plugin migrations with platform job logging.
Table of Contents
Constants
- JOB_TYPE : mixed = 'tenant_migration'
- OUTCOME_COMPLETED : mixed = 'completed'
- OUTCOME_FAILED : mixed = 'failed'
- OUTCOME_SKIPPED : mixed = 'skipped'
- PLATFORM_CONNECTION : mixed = 'platform'
- TENANT_CONNECTION : mixed = \App\Services\TenantConnectionManager::CONNECTI...
Properties
- $lockManager : TenantMigrationLockManagerInterface|null
- $migrationCatalog : TenantMigrationCatalog|null
- $migrationMarkerService : TenantMigrationMarkerServiceInterface|null
- $migrationRunner : TenantMigrationRunnerInterface|null
- $migrationStateInspector : TenantMigrationStateInspectorInterface|null
- $tenantConnectionManager : TenantConnectionManager|null
Methods
- defaultName() : string
- execute() : int|null
- scrubError() : string
- Remove secret-like values before writing platform job errors.
- setLockManager() : void
- Override advisory locking for tests.
- setMigrationMarkerService() : void
- Override pre-migration marker creation for tests.
- setMigrationRunner() : void
- Override migration execution for tests.
- setMigrationStateInspector() : void
- Override tenant migration inspection for tests.
- setTenantConnectionManager() : void
- Override tenant connection scoping for tests.
- buildOptionParser() : ConsoleOptionParser
- assertMarkerOnlyOptions() : void
- assertNoMigrationHistoryDrift() : void
- Refuse to operate when database history contains migrations absent from this image.
- assertReleaseCompatibility() : void
- assertSafeSlug() : void
- Validate tenant slug syntax before querying metadata.
- assertSelector() : void
- Validate that exactly one target selector was supplied.
- assertTenantCurrent() : void
- Verify that migration execution reached every app and plugin target.
- assertTenantDatabaseConfig() : void
- Fail closed when required tenant database metadata is missing.
- executeMigrationCommand() : void
- insertJob() : void
- isStandardReleaseMigration() : bool
- Standard deploy migrations can be planned, skipped, and verified against latest.
- lockManager() : TenantMigrationLockManagerInterface
- Get the advisory lock manager.
- migrateTenant() : string
- migrationCatalog() : TenantMigrationCatalog
- Get the migration catalog shared by planning and result verification.
- migrationCommandArgs() : array<int, string>
- migrationMarkerService() : TenantMigrationMarkerServiceInterface
- Get the pre-migration marker service.
- migrationOptions() : array<string, mixed>
- migrationStateInspector() : TenantMigrationStateInspectorInterface
- Get the release migration-state inspector.
- now() : string
- Current UTC timestamp for platform rows.
- platform() : Connection
- Get the platform metadata connection.
- pluginsWithMigrations() : array<int, string>
- printStatus() : void
- readSchemaVersion() : string|null
- Read the current Phinx schema version from the tenant database.
- resolveTenants() : array<int, TenantMetadata>
- runCakeMigrations() : void
- runTenantMigration() : TenantMigrationResult
- tenantConnectionManager() : TenantConnectionManager
- Get the tenant connection manager.
Constants
JOB_TYPE
private
mixed
JOB_TYPE
= 'tenant_migration'
OUTCOME_COMPLETED
private
mixed
OUTCOME_COMPLETED
= 'completed'
OUTCOME_FAILED
private
mixed
OUTCOME_FAILED
= 'failed'
OUTCOME_SKIPPED
private
mixed
OUTCOME_SKIPPED
= 'skipped'
PLATFORM_CONNECTION
private
mixed
PLATFORM_CONNECTION
= 'platform'
TENANT_CONNECTION
private
mixed
TENANT_CONNECTION
= \App\Services\TenantConnectionManager::CONNECTION_ALIAS
Properties
$lockManager
private
TenantMigrationLockManagerInterface|null
$lockManager
= null
$migrationCatalog
private
TenantMigrationCatalog|null
$migrationCatalog
= null
$migrationMarkerService
private
TenantMigrationMarkerServiceInterface|null
$migrationMarkerService
= null
$migrationRunner
private
TenantMigrationRunnerInterface|null
$migrationRunner
= null
$migrationStateInspector
private
TenantMigrationStateInspectorInterface|null
$migrationStateInspector
= null
$tenantConnectionManager
private
TenantConnectionManager|null
$tenantConnectionManager
= null
Methods
defaultName()
public
static defaultName() : string
Tags
Return values
stringexecute()
public
execute(Arguments $args, ConsoleIo $io) : int|null
Parameters
- $args : Arguments
- $io : ConsoleIo
Tags
Return values
int|nullscrubError()
Remove secret-like values before writing platform job errors.
public
static scrubError(string $message) : string
Parameters
- $message : string
Return values
stringsetLockManager()
Override advisory locking for tests.
public
setLockManager(TenantMigrationLockManagerInterface $lockManager) : void
Parameters
- $lockManager : TenantMigrationLockManagerInterface
setMigrationMarkerService()
Override pre-migration marker creation for tests.
public
setMigrationMarkerService(TenantMigrationMarkerServiceInterface $migrationMarkerService) : void
Parameters
- $migrationMarkerService : TenantMigrationMarkerServiceInterface
setMigrationRunner()
Override migration execution for tests.
public
setMigrationRunner(TenantMigrationRunnerInterface $migrationRunner) : void
Parameters
- $migrationRunner : TenantMigrationRunnerInterface
setMigrationStateInspector()
Override tenant migration inspection for tests.
public
setMigrationStateInspector(TenantMigrationStateInspectorInterface $migrationStateInspector) : void
Parameters
- $migrationStateInspector : TenantMigrationStateInspectorInterface
setTenantConnectionManager()
Override tenant connection scoping for tests.
public
setTenantConnectionManager(TenantConnectionManager $tenantConnectionManager) : void
Parameters
- $tenantConnectionManager : TenantConnectionManager
buildOptionParser()
protected
buildOptionParser(ConsoleOptionParser $parser) : ConsoleOptionParser
Parameters
- $parser : ConsoleOptionParser
Tags
Return values
ConsoleOptionParserassertMarkerOnlyOptions()
private
assertMarkerOnlyOptions(array<string, mixed> $options) : void
Parameters
- $options : array<string, mixed>
assertNoMigrationHistoryDrift()
Refuse to operate when database history contains migrations absent from this image.
private
assertNoMigrationHistoryDrift(TenantMetadata $tenant, TenantMigrationState $state) : void
Parameters
- $tenant : TenantMetadata
- $state : TenantMigrationState
assertReleaseCompatibility()
private
assertReleaseCompatibility(array<int, TenantMetadata> $tenants, array<string, mixed> $options) : void
Parameters
- $tenants : array<int, TenantMetadata>
- $options : array<string, mixed>
assertSafeSlug()
Validate tenant slug syntax before querying metadata.
private
assertSafeSlug(string $slug) : void
Parameters
- $slug : string
assertSelector()
Validate that exactly one target selector was supplied.
private
assertSelector(Arguments $args) : void
Parameters
- $args : Arguments
assertTenantCurrent()
Verify that migration execution reached every app and plugin target.
private
assertTenantCurrent(TenantMetadata $tenant, TenantMigrationState $state) : void
Parameters
- $tenant : TenantMetadata
- $state : TenantMigrationState
assertTenantDatabaseConfig()
Fail closed when required tenant database metadata is missing.
private
assertTenantDatabaseConfig(TenantMetadata $tenant) : void
Parameters
- $tenant : TenantMetadata
executeMigrationCommand()
private
executeMigrationCommand(MigrateCommand $command, array<int, string> $args, ConsoleIo $io, string $label) : void
Parameters
- $command : MigrateCommand
- $args : array<int, string>
- $io : ConsoleIo
- $label : string
insertJob()
private
insertJob(string $jobId, TenantMetadata $tenant, array<string, mixed> $options) : void
Parameters
- $jobId : string
- $tenant : TenantMetadata
- $options : array<string, mixed>
isStandardReleaseMigration()
Standard deploy migrations can be planned, skipped, and verified against latest.
private
isStandardReleaseMigration(array<string, mixed> $options) : bool
Parameters
- $options : array<string, mixed>
Return values
boollockManager()
Get the advisory lock manager.
private
lockManager() : TenantMigrationLockManagerInterface
Return values
TenantMigrationLockManagerInterfacemigrateTenant()
private
migrateTenant(TenantMetadata $tenant, array<string, mixed> $options, ConsoleIo $io) : string
Parameters
- $tenant : TenantMetadata
- $options : array<string, mixed>
- $io : ConsoleIo
Return values
stringmigrationCatalog()
Get the migration catalog shared by planning and result verification.
private
migrationCatalog() : TenantMigrationCatalog
Return values
TenantMigrationCatalogmigrationCommandArgs()
private
migrationCommandArgs(array{target?: string|null, date?: string|null, fake?: bool, dry_run?: bool, manifest?: string|null} $options) : array<int, string>
Parameters
- $options : array{target?: string|null, date?: string|null, fake?: bool, dry_run?: bool, manifest?: string|null}
Return values
array<int, string>migrationMarkerService()
Get the pre-migration marker service.
private
migrationMarkerService() : TenantMigrationMarkerServiceInterface
Return values
TenantMigrationMarkerServiceInterfacemigrationOptions()
private
migrationOptions(Arguments $args) : array<string, mixed>
Parameters
- $args : Arguments
Return values
array<string, mixed>migrationStateInspector()
Get the release migration-state inspector.
private
migrationStateInspector() : TenantMigrationStateInspectorInterface
Return values
TenantMigrationStateInspectorInterfacenow()
Current UTC timestamp for platform rows.
private
now() : string
Return values
stringplatform()
Get the platform metadata connection.
private
platform() : Connection
Return values
ConnectionpluginsWithMigrations()
private
pluginsWithMigrations() : array<int, string>
Return values
array<int, string>printStatus()
private
printStatus(array<int, TenantMetadata> $tenants, ConsoleIo $io) : void
Parameters
- $tenants : array<int, TenantMetadata>
- $io : ConsoleIo
readSchemaVersion()
Read the current Phinx schema version from the tenant database.
private
readSchemaVersion() : string|null
Return values
string|nullresolveTenants()
private
resolveTenants(Arguments $args) : array<int, TenantMetadata>
Parameters
- $args : Arguments
Return values
array<int, TenantMetadata>runCakeMigrations()
private
runCakeMigrations(array{target?: string|null, date?: string|null, fake?: bool, dry_run?: bool, manifest?: string|null} $options, ConsoleIo $io) : void
Parameters
- $options : array{target?: string|null, date?: string|null, fake?: bool, dry_run?: bool, manifest?: string|null}
- $io : ConsoleIo
runTenantMigration()
private
runTenantMigration(TenantMetadata $tenant, array<string, mixed> $options, ConsoleIo $io) : TenantMigrationResult
Parameters
- $tenant : TenantMetadata
- $options : array<string, mixed>
- $io : ConsoleIo
Return values
TenantMigrationResulttenantConnectionManager()
Get the tenant connection manager.
private
tenantConnectionManager() : TenantConnectionManager