NAME
Quiq::Database::Patch - Definiere Patches für eine Datenbank und wende sie an (Basisklasse)
BASE CLASS
SYNOPSIS
Abgeleitete Patch-Klasse mit Patch-Methoden patch1() ... patchN() definieren:
package MyPatchClass;
use base qw/Quiq::Database::Patch/;
sub patch1 {
my ($self,$db) = @_;
# Code Patch 1
return;
}
sub patch2 {
my ($self,$db) = @_;
# Code Patch 2
return;
}
# ...
Ein oder mehrere Patches auf eine Datenbank anwenden:
$db = Quiq::Database::Connection->new($udl);
$pat = MyPatchClass->new($db);
$pat->apply($n);
DESCRIPTION
Wir entwickeln eine Datenbank, indem wir fortgesetzt Patches auf sie anwenden. Die Patches können Schema- oder Datenänderungen betreffen. Die Patches werden fortschreitend in einer einzigen Klasse definiert. Die Patchklasse ist von der Klasse Quiq::Database::Patch abgeleitet. Jeder Patch wird durch eine Methode mit dem Namen patch
N realisiert. Hierbei ist N der Patchlevel. Wir heben die Datenbank auf Patchlevel $n, indem wir die Methode $pat->apply($n)
aufrufen. Alle Patches vom aktuellen Patchlevel+1 bis $n werden dabei nacheinander auf die Datenbank angewandt. Ist der aktuelle Patchlevel gleich oder größer dem angeforderten Patchlevel $n, wird kein Patch angewandt. Auf einen früheren Patchlevel als den aktuellen Patchlevel kann nicht zurückgegangen werden. Soll ein Patch zurückgenommen werden, ist ein weiterer Patch zu schreiben, der diesen rückgängig macht. Jeder Patch wird einzeln committet. Der aktuelle Patchlevel ist in der Tabelle PATCHLEVEL
festgehalten. Diese wird beim ersten Aufruf der Methode $class->new($db)
automatisch angelegt.
METHODS
Konstruktor
new() - Instantiiere Objekt
Synopsis
$pat = $class->new($db);
Arguments
Returns
Patch-Object
Description
Instantiiere eine Objekt der Klasse und liefere eine Referenz auf dieses Objekt zurück.
Klassenmethoden
maxLevel() - Liefere den höchsten möglichen Patchlevel
Synopsis
$level = this->maxLevel;
Returns
(Integer) Patchlevel
Description
Ermittele den höchsten möglichen Patchlevel und liefere diesen zurück.
Objektmethoden
apply() - Wende Patch(es) an
Synopsis
$pat->apply($level);
Arguments
Description
Wende alle Patches an, bis Patchlevel $level erreicht ist.
currentLevel() - Liefere aktuellen Patchlevel
Synopsis
$level = $pat->currentLevel;
Returns
(Integer) Patchlevel
Description
Ermittele den aktuellen Patchlevel und liefere diesen zurück.
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.