SHA256
Исправить стартовый bootstrap DM
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package shine.db;
|
package shine.db;
|
||||||
|
|
||||||
import shine.db.connection.DbProvider;
|
import shine.db.connection.DbProvider;
|
||||||
|
import shine.db.dao.DmDialogStateDAO;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@@ -15,6 +16,7 @@ public final class DbController implements DbProvider {
|
|||||||
private static volatile DbController instance;
|
private static volatile DbController instance;
|
||||||
|
|
||||||
private final PostgresDbController delegate;
|
private final PostgresDbController delegate;
|
||||||
|
private volatile boolean dmDialogStateBootstrapped;
|
||||||
|
|
||||||
private DbController() {
|
private DbController() {
|
||||||
this.delegate = PostgresDbController.getInstance();
|
this.delegate = PostgresDbController.getInstance();
|
||||||
@@ -24,7 +26,9 @@ public final class DbController implements DbProvider {
|
|||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
synchronized (DbController.class) {
|
synchronized (DbController.class) {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
instance = new DbController();
|
DbController created = new DbController();
|
||||||
|
instance = created;
|
||||||
|
created.bootstrapDmDialogStateIfNeeded();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -40,4 +44,18 @@ public final class DbController implements DbProvider {
|
|||||||
public void close() {
|
public void close() {
|
||||||
delegate.close();
|
delegate.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void bootstrapDmDialogStateIfNeeded() {
|
||||||
|
if (dmDialogStateBootstrapped) return;
|
||||||
|
synchronized (this) {
|
||||||
|
if (dmDialogStateBootstrapped) return;
|
||||||
|
try (Connection connection = delegate.getConnection()) {
|
||||||
|
DmDialogStateDAO.getInstance().bootstrapIfEmpty(connection);
|
||||||
|
dmDialogStateBootstrapped = true;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
instance = null;
|
||||||
|
throw new RuntimeException("DM dialog state bootstrap failed", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package shine.db;
|
package shine.db;
|
||||||
|
|
||||||
import shine.db.connection.DriverManagerDbProvider;
|
import shine.db.connection.DriverManagerDbProvider;
|
||||||
import shine.db.dao.DmDialogStateDAO;
|
|
||||||
import utils.config.AppConfig;
|
import utils.config.AppConfig;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@@ -35,12 +34,6 @@ public final class PostgresDbController {
|
|||||||
this.delegate = new DriverManagerDbProvider(jdbcUrl, dbUser, dbPassword, connection -> {
|
this.delegate = new DriverManagerDbProvider(jdbcUrl, dbUser, dbPassword, connection -> {
|
||||||
connection.setAutoCommit(true);
|
connection.setAutoCommit(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
try (Connection connection = this.delegate.getConnection()) {
|
|
||||||
DmDialogStateDAO.getInstance().bootstrapIfEmpty(connection);
|
|
||||||
} catch (SQLException e) {
|
|
||||||
throw new RuntimeException("DM dialog state bootstrap failed", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PostgresDbController getInstance() {
|
public static PostgresDbController getInstance() {
|
||||||
|
|||||||
Reference in New Issue
Block a user