You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
932 B
40 lines
932 B
3 years ago
|
import {Injectable} from '../../di'
|
||
|
import {Awaitable} from '../../util'
|
||
|
|
||
|
/**
|
||
|
* Abstract base-class for one-time migrations.
|
||
|
*/
|
||
|
@Injectable()
|
||
|
export abstract class Migration {
|
||
|
/** Set by the Migrations unit on load. */
|
||
|
protected migrationIdentifier!: string
|
||
|
|
||
|
/**
|
||
|
* Sets the migration identifier.
|
||
|
* This is used internally when the Migrations service loads
|
||
|
* the migration files to determine the ID from the file-name.
|
||
|
* It shouldn't be used externally.
|
||
|
* @param name
|
||
|
*/
|
||
|
public setMigrationIdentifier(name: string): void {
|
||
|
this.migrationIdentifier = name
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the unique identifier of this migration.
|
||
|
*/
|
||
|
public get identifier(): string {
|
||
|
return this.migrationIdentifier
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Apply the migration.
|
||
|
*/
|
||
|
abstract up(): Awaitable<void>
|
||
|
|
||
|
/**
|
||
|
* Undo the migration.
|
||
|
*/
|
||
|
abstract down(): Awaitable<void>
|
||
|
}
|