fix: Neue Datenbank anlegen ohne geladene Konfiguration ermoeglichen
Ohne Override und ohne geladene Konfiguration lieferte der aktive-DB-Supplier faelschlich den Zielpfad selbst zurueck, wodurch die Selbst-Ueberschreib-Pruefung immer ansprach und jede Anlage mit "Zielpfad ist die aktuell aktive Datenbankdatei" abgelehnt wurde. Der Supplier signalisiert "keine aktive Datenbank" nun mit null; der Use-Case ueberspringt in diesem Fall die Pruefung und laesst die Anlage zu. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+9
-5
@@ -2042,6 +2042,9 @@ public class BootstrapRunner {
|
||||
* {@link #activeDatabaseContext}. Die zugrundeliegende Liefer-Lambda für den aktiven
|
||||
* DB-Pfad bevorzugt das Override im Kontext-Port; ist keines gesetzt, fällt sie auf den
|
||||
* {@code sqliteFile}-Wert der aus {@code configFilePath} geladenen Konfiguration zurück.
|
||||
* Existiert weder ein Override noch eine ladbare Konfiguration, gibt es keine aktive
|
||||
* Datenbank: die Lambda liefert dann {@code null}, wodurch der Use-Case die
|
||||
* Selbst-Überschreib-Prüfung überspringt und die Anlage zulässt.
|
||||
* <p>
|
||||
* Pfad-Validierungs- und Move-Schritte verbleiben im Use-Case; der Adapter führt
|
||||
* Anlage, Migration und Verbindungstest aus.
|
||||
@@ -2061,9 +2064,10 @@ public class BootstrapRunner {
|
||||
return override.get();
|
||||
}
|
||||
if (configFilePath == null || !Files.exists(configFilePath)) {
|
||||
// Ohne Konfiguration und ohne Override: Zielpfad selbst als „aktiv" werten,
|
||||
// damit die Pfadprüfung nur das Selbst-Überschreiben verhindert.
|
||||
return targetFile.toAbsolutePath().normalize();
|
||||
// Ohne Override und ohne geladene Konfiguration existiert keine aktive
|
||||
// Datenbank. null signalisiert dem Use-Case: keine Selbst-Überschreib-Prüfung
|
||||
// nötig, die Anlage darf fortfahren.
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
migrateConfigurationIfNeeded(configFilePath);
|
||||
@@ -2071,9 +2075,9 @@ public class BootstrapRunner {
|
||||
return config.sqliteFile().toAbsolutePath().normalize();
|
||||
} catch (Exception e) {
|
||||
LOG.warn("GUI-Datenbankanlage: aktive DB konnte nicht aus {} ermittelt werden: {} — "
|
||||
+ "Zielpfad wird stattdessen als aktiv angenommen.",
|
||||
+ "es wird keine aktive DB angenommen.",
|
||||
configFilePath, e.getMessage());
|
||||
return targetFile.toAbsolutePath().normalize();
|
||||
return null;
|
||||
}
|
||||
};
|
||||
DefaultCreateNewDatabaseUseCase useCase = new DefaultCreateNewDatabaseUseCase(
|
||||
|
||||
Reference in New Issue
Block a user