Compare commits

..

12 Commits

7 changed files with 68 additions and 13 deletions

View File

@@ -348,3 +348,33 @@
### Features ### Features
* BAC-39 Authentication ([#114](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/issues/114)) ([f6d3a18](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/f6d3a1845205318f43eb443601fd257613b7defb)) * BAC-39 Authentication ([#114](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/issues/114)) ([f6d3a18](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/f6d3a1845205318f43eb443601fd257613b7defb))
## (2026-01-20)
### Features
* Update persistence.xml and build.sbt for resource management ([a7292e3](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/a7292e3b5df4788f2f8bea5a2ec7b209b7357608))
## (2026-01-20)
### Features
* Update connection provider in persistence.xml for HikariCP ([f4290b4](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/f4290b44976fb6dcd4fc4b896614ba6062da73b1))
## (2026-01-20)
### Features
* Update Hibernate connection provider and database configuration ([71a549b](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/71a549b7f059e748f7691bb9a27e2861b61c6f6f))
## (2026-01-20)
### Features
* Add HikariCP specific configuration to db.conf ([009b2b1](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/009b2b1ad9180f58a0b1434354f8a467b4e452ca))
## (2026-01-20)
### Features
* Add HikariCP specific configuration to db.conf ([4aa8709](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/4aa8709eb593b03254efc616b6b04c23b23ab6ab))
## (2026-01-20)
### Features
* Enhance EntityManagerProvider to use Play configuration for database settings ([476db28](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/476db288216ed2c1013fe3ddb9b82472254e352b))

View File

@@ -59,8 +59,11 @@ lazy val knockoutwhistweb = project.in(file("knockoutwhistweb"))
libraryDependencies += "org.playframework" %% "play-java-jpa" % "3.0.6", libraryDependencies += "org.playframework" %% "play-java-jpa" % "3.0.6",
libraryDependencies += "com.nimbusds" % "oauth2-oidc-sdk" % "11.31.1", libraryDependencies += "com.nimbusds" % "oauth2-oidc-sdk" % "11.31.1",
libraryDependencies += "org.playframework" %% "play-ws" % "3.0.6", libraryDependencies += "org.playframework" %% "play-ws" % "3.0.6",
libraryDependencies += "org.hibernate.orm" % "hibernate-hikaricp" % "7.2.1.Final",
libraryDependencies += ws, libraryDependencies += ws,
JsEngineKeys.engineType := JsEngineKeys.EngineType.Node JsEngineKeys.engineType := JsEngineKeys.EngineType.Node,
PlayKeys.externalizeResourcesExcludes += baseDirectory.value / "conf" / "META-INF" / "persistence.xml"
) )
lazy val root = (project in file(".")) lazy val root = (project in file("."))

View File

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

View File

@@ -8,18 +8,17 @@
<persistence-unit name="defaultPersistenceUnit"> <persistence-unit name="defaultPersistenceUnit">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>model.users.UserEntity</class>
<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"/>
<property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.show_sql" value="false"/> <property name="hibernate.show_sql" value="false"/>
<property name="hibernate.format_sql" value="true"/> <property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.use_sql_comments" value="true"/>

View File

@@ -1,10 +1,21 @@
# Database configuration - PostgreSQL with environment variables # Database configuration - PostgreSQL with environment variables
db.default.driver=org.postgresql.Driver db.default.driver="org.postgresql.Driver"
db.default.url="jdbc:postgresql://localhost:5432/knockoutwhist"
db.default.url=${?DATABASE_URL} db.default.url=${?DATABASE_URL}
db.default.username="kw_user"
db.default.username=${?DB_USER} db.default.username=${?DB_USER}
db.default.password="postgres"
db.default.password=${?DB_PASSWORD} db.default.password=${?DB_PASSWORD}
db.default.password=""
# HikariCP specific configuration
db.default.hikaricp.driverClassName="org.postgresql.Driver"
db.default.hikaricp.jdbcUrl="jdbc:postgresql://localhost:5432/knockoutwhist"
db.default.hikaricp.jdbcUrl=${?DATABASE_URL}
db.default.hikaricp.username="kw_user"
db.default.hikaricp.username=${?DB_USER}
db.default.hikaricp.password="postgres"
db.default.hikaricp.password=${?DB_PASSWORD}
# JPA/Hibernate configuration # JPA/Hibernate configuration
jpa.default=defaultPersistenceUnit jpa.default=defaultPersistenceUnit

View File

@@ -1,3 +1,3 @@
MAJOR=4 MAJOR=4
MINOR=31 MINOR=37
PATCH=0 PATCH=0