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.Inject
|
||||
import play.api.Configuration
|
||||
import jakarta.inject.Singleton
|
||||
import jakarta.persistence.{EntityManager, EntityManagerFactory, Persistence}
|
||||
|
||||
@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 = {
|
||||
emf.createEntityManager()
|
||||
|
||||
Reference in New Issue
Block a user