Initiate Postgres connection pool on startup
This commit is contained in:
28
src/main/java/database/PgDatabaseConnection.java
Normal file
28
src/main/java/database/PgDatabaseConnection.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package database;
|
||||
|
||||
import database.note.NoteRowMapper;
|
||||
import org.jdbi.v3.core.Handle;
|
||||
import org.jdbi.v3.core.Jdbi;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class PgDatabaseConnection {
|
||||
private final DataSource dataSource;
|
||||
private final Jdbi jdbi;
|
||||
|
||||
public PgDatabaseConnection(DataSource dataSource) {
|
||||
this.dataSource = dataSource;
|
||||
this.jdbi = Jdbi.create(dataSource)
|
||||
.registerRowMapper(new NoteRowMapper()); // TODO: configure jdbi elsewhere
|
||||
}
|
||||
|
||||
public Connection getConnection() throws SQLException {
|
||||
return dataSource.getConnection();
|
||||
}
|
||||
|
||||
public Handle getHandle() {
|
||||
return jdbi.open();
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ import database.PgDatabaseConfig;
|
||||
import org.flywaydb.core.Flyway;
|
||||
import org.flywaydb.core.api.FlywayException;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class FlywayRunner {
|
||||
private final PgDatabaseConfig dbConfig;
|
||||
|
||||
@@ -18,6 +20,10 @@ public class FlywayRunner {
|
||||
.createSchemas(true)
|
||||
.connectRetries(10)
|
||||
.connectRetriesInterval(5)
|
||||
.placeholders(Map.of(
|
||||
"server-username", dbConfig.username(),
|
||||
"server-password", dbConfig.password())
|
||||
)
|
||||
.load();
|
||||
flyway.migrate();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package database.note;
|
||||
|
||||
import database.DaoException;
|
||||
import database.PgDatabaseConnection;
|
||||
import model.Note;
|
||||
import org.jdbi.v3.core.Handle;
|
||||
import org.jdbi.v3.core.JdbiException;
|
||||
@@ -10,6 +11,11 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class NoteDao {
|
||||
private final PgDatabaseConnection connection;
|
||||
|
||||
public NoteDao(PgDatabaseConnection connection) {
|
||||
this.connection = connection;
|
||||
}
|
||||
|
||||
public void save(Note note) {
|
||||
try (Handle handle = DatabaseConnection.getHandle()) {
|
||||
|
||||
Reference in New Issue
Block a user