Quiq::Database::Patch - Definiere Patches für eine Datenbank und wende sie an (Basisklasse)
Quiq::Hash
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);
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 patchN 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.
patch
$pat->apply($n)
PATCHLEVEL
$class->new($db)
$pat = $class->new($db);
(Object) Datenbankverbindung
Patch-Object
Instantiiere eine Objekt der Klasse und liefere eine Referenz auf dieses Objekt zurück.
$level = this->maxLevel;
(Integer) Patchlevel
Ermittele den höchsten möglichen Patchlevel und liefere diesen zurück.
$pat->apply($level);
Wende alle Patches an, bis Patchlevel $level erreicht ist.
$level = $pat->currentLevel;
Ermittele den aktuellen Patchlevel und liefere diesen zurück.
1.204
Frank Seitz, http://fseitz.de/
Copyright (C) 2022 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.