OPUS4 / framework

OPUS 4 Database Implementation
Other
2 stars 7 forks source link

Skripte "prepare-database.sh" und "setup.sh" konsolidieren #319

Closed j3nsch closed 1 year ago

j3nsch commented 1 year ago

Das Skript bin/prepare-database.sh funktioniert gut, aber es kann noch weiter ausgebaut werden. Es überlappt sich mit dem älteren Skript bin/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.

j3nsch commented 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.

j3nsch commented 1 year ago

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.

j3nsch commented 1 year ago

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.

j3nsch commented 1 year ago

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.

j3nsch commented 1 year ago

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.