feat: Enhance EntityManagerProvider to use Play configuration for database settings
This commit is contained in:
@@ -2,13 +2,25 @@ package di
|
|||||||
|
|
||||||
import com.google.inject.Provider
|
import com.google.inject.Provider
|
||||||
import com.google.inject.Inject
|
import com.google.inject.Inject
|
||||||
|
import play.api.Configuration
|
||||||
import jakarta.inject.Singleton
|
import jakarta.inject.Singleton
|
||||||
import jakarta.persistence.{EntityManager, EntityManagerFactory, Persistence}
|
import jakarta.persistence.{EntityManager, EntityManagerFactory, Persistence}
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
class EntityManagerProvider @Inject()() extends Provider[EntityManager] {
|
class EntityManagerProvider @Inject()(config: Configuration) extends Provider[EntityManager] {
|
||||||
|
|
||||||
private val emf: EntityManagerFactory = Persistence.createEntityManagerFactory("defaultPersistenceUnit")
|
private val emf: EntityManagerFactory = {
|
||||||
|
val dbConfig = config.get[Configuration]("db.default")
|
||||||
|
val props = new java.util.HashMap[String, Object]()
|
||||||
|
|
||||||
|
// Map Play configuration to Jakarta Persistence properties
|
||||||
|
props.put("jakarta.persistence.jdbc.driver", dbConfig.get[String]("driver"))
|
||||||
|
props.put("jakarta.persistence.jdbc.url", dbConfig.get[String]("url"))
|
||||||
|
props.put("jakarta.persistence.jdbc.user", dbConfig.get[String]("username"))
|
||||||
|
props.put("jakarta.persistence.jdbc.password", dbConfig.get[String]("password"))
|
||||||
|
|
||||||
|
Persistence.createEntityManagerFactory("defaultPersistenceUnit", props)
|
||||||
|
}
|
||||||
|
|
||||||
override def get(): EntityManager = {
|
override def get(): EntityManager = {
|
||||||
emf.createEntityManager()
|
emf.createEntityManager()
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<!-- Database connection settings -->
|
<!-- Database connection settings (Overridden by EntityManagerProvider) -->
|
||||||
<property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver"/>
|
<property name="jakarta.persistence.jdbc.driver" value="org.postgresql.Driver"/>
|
||||||
<property name="jakarta.persistence.jdbc.url" value="${DATABASE_URL}"/>
|
<property name="jakarta.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/knockoutwhist"/>
|
||||||
<property name="jakarta.persistence.jdbc.user" value="${DB_USER}"/>
|
<property name="jakarta.persistence.jdbc.user" value="kw_user"/>
|
||||||
<property name="jakarta.persistence.jdbc.password" value="${DB_PASSWORD}"/>
|
<property name="jakarta.persistence.jdbc.password" value="postgres"/>
|
||||||
|
|
||||||
<!-- Hibernate specific settings -->
|
<!-- Hibernate specific settings -->
|
||||||
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
|
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user