Database/src/Migrations/Migration.php

68 lines
1.3 KiB
PHP
Raw Normal View History

2024-11-08 16:33:44 +01:00
<?php
namespace Nest\Database\Migrations;
use Nest\Database\Database;
use Nest\Database\Migrations\Diff\Table;
/**
* A database migration.
*/
abstract class Migration
{
/**
* Construct a new database migration.
* @param Database $database The database of the migration.
* @param string $version Version identifier.
* @param string $name Database migration name.
*/
public function __construct(protected readonly Database $database, private readonly string $version, private readonly string $name)
{
}
/**
* @return string The version identifier.
*/
public function getVersion(): string
{
return $this->version;
}
/**
* @return string The database migration name.
*/
public function getName(): string
{
return $this->name;
}
/**
* Describes operations of the current database migration.
* @return string Description of database migration.
*/
public abstract function getDescription(): string;
/**
* Do the migration.
* @return void
*/
public abstract function up(): void;
/**
* Undo the migration.
* @return void
*/
public abstract function down(): void;
/**
* Create a new table diff manager.
* @param string $tableName Table name to alter.
* @return Table Table diff manager.
*/
protected function table(string $tableName): Table
{
return new Table($this->database, $tableName);
}
}