Initiate Postgres connection pool on startup

This commit is contained in:
P0nk
2023-02-25 00:11:33 +01:00
parent 8bb825ef02
commit f6f3c9c3e3
6 changed files with 77 additions and 14 deletions

View 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();
}
}

View File

@@ -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();
}

View File

@@ -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()) {