Closed j3nsch closed 1 year ago
Das Skript soll in "opus4db" umbenannt werden. Dafür muss dann aber die Verwendung in allen Packages angepasst werden, vor allem in den Vagrantfile-Dateien in denen eine Datenbank eingerichtet wird.
Das neue Skript soll als "bin" in composer.json
konfiguriert werden. Damit landet es bei den Packages, die das Framework als Abhängigkeit deklarieren, automatisch im vendor/bin
-Verzeichnis und kann leicht in anderen Packages aufgerufen werden, um eine Datenbank für Tests anzulegen.
https://getcomposer.org/doc/articles/vendor-binaries.md
Der Default-Modus dabei sollte interaktiv sein, so dass das MySQL-Root-Passwort nicht als Option angegeben werden muss und in Logs landet.
Das Skript hat jetzt den Namen opus4db
und ist in anderen Packages in vendor/bin
verfügbar. Die Konfiguration von opus4-import wurde bereits angepasst. Bei den anderen Packages muss die YML-Datei für die GitHub Actions noch aktualisiert werden.
Was jetzt noch fehlt ist die Funktionalität für das Anlegen der Konfiguationsdatei, config.ini
, und die Initialisierung des Datenbank-Schema. Die Datei sollte in Zukunft database.ini
heißen. Das muss im Bootstrap berücksichtigt werden. Vielleicht sollte das warten bis wir sowieso das Bootstrapping für Laminas anpassen müssen.
Aktuell kann das Skript createdb.php
folgendermaßen aufgerufen werden.
$ export APPLICATION_PATH=. && php vendor/opus4-repo/framework/db/createdb.php
APPLICATION_PATH muss gesetzt werden, damit createdb.php
die Konfigurationsdateien findet. Wie lässt sich das vereinfachen?
Wenn für alle Projekte die selben Datenbank-User verwendet werden sollen, opus4admin
und opus4
, und diese bereits angelegt wurden, reicht es für eine neue Datenbank einen Namen zu wählen.
$ vendor/bin/opus4db --dbname opus4test
So lassen sich leicht neue Datenbanken für weitere Packages anlegen.
Das createdb.php
Skript sollte auch nach bin
verschoben werden. Macht es Sinn die Funktionalität als Command zu implementieren? Sollte/kann opus4db
als PHP-Skript implementiert werden? Dann könnte die ganze Funktionalität von Symfony Console verwendet werden.
Das opus4db
Skript kann jetzt die Datenbank anlegen, das Schema initialisieren und die Konfigurationsdatei erzeugen. Die einzelnen Funktionen können gezielt verwendet werden. Es ist möglich für die Entwicklung die Account Informationen in Environment-Variablen abzulegen und so für alle Packages zu verwenden ohne sie nochmals eingeben zu müssen.
Das Skript
bin/prepare-database.sh
funktioniert gut, aber es kann noch weiter ausgebaut werden. Es überlappt sich mit dem älteren Skriptbin/setup.sh
. In den Skripten gibt es einige TODO Kommentare, die erledigt werden sollten. Am Ende sollte nur noch ein Skript übrig sein bzw. die Verantwortungen der beiden Skripte klar getrennt sein.