Compare commits

..

4 Commits

7 changed files with 57 additions and 5 deletions

View File

@@ -287,3 +287,13 @@
### Features ### Features
* Add caching headers for env.js in Nginx configuration ([dbad818](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/dbad818fdaeb237a05f583e5402773a4339e7aa1)) * Add caching headers for env.js in Nginx configuration ([dbad818](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/dbad818fdaeb237a05f583e5402773a4339e7aa1))
## (2026-01-07)
### Features
* Add logging to Gateway for pod synchronization and startup events ([6ef7401](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/6ef74014430673e725245bf37e44c5b90b81abb3))
## (2026-01-07)
### Features
* Add logging to Gateway for pod synchronization and startup events ([2615707](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/26157076d686a5dd3f8157ec2b2d1ae9d9e9eedf))

View File

@@ -0,0 +1,30 @@
package controllers
import auth.{AuthAction, AuthenticatedRequest}
import dto.subDTO.UserDTO
import logic.user.{SessionManager, UserManager}
import model.users.User
import play.api.*
import play.api.libs.json.Json
import play.api.mvc.*
import play.api.mvc.Cookie.SameSite.{Lax, None, Strict}
import javax.inject.*
/**
* This controller creates an `Action` to handle HTTP requests to the
* application's home page.
*/
@Singleton
class HealthController @Inject()(
val controllerComponents: ControllerComponents,
) extends BaseController {
def simple(): Action[AnyContent] = {
Action { implicit request =>
Ok("OK")
}
}
}

View File

@@ -4,6 +4,7 @@ import de.knockoutwhist.data.Pod
import de.knockoutwhist.data.redis.RedisManager import de.knockoutwhist.data.redis.RedisManager
import org.apache.pekko.actor.ActorSystem import org.apache.pekko.actor.ActorSystem
import org.redisson.config.Config import org.redisson.config.Config
import play.api.Logger
import play.api.inject.ApplicationLifecycle import play.api.inject.ApplicationLifecycle
import java.util.UUID import java.util.UUID
@@ -17,16 +18,23 @@ class Gateway @Inject()(
actorSystem: ActorSystem actorSystem: ActorSystem
)(implicit ec: ExecutionContext) { )(implicit ec: ExecutionContext) {
private val logger = Logger(getClass.getName)
val redis: RedisManager = { val redis: RedisManager = {
val config: Config = Config() val config: Config = Config()
config.useSingleServer.setAddress("valkey://" + sys.env.getOrElse("VALKEY_HOST", "localhost") + ":" + sys.env.getOrElse("VALKEY_PORT", "6379")) val url = "valkey://" + sys.env.getOrElse("VALKEY_HOST", "localhost") + ":" + sys.env.getOrElse("VALKEY_PORT", "6379")
logger.info(s"Connecting to Valkey at $url")
config.useSingleServer.setAddress(url)
RedisManager(config) RedisManager(config)
} }
redis.continuousSyncPod(() => { redis.continuousSyncPod(() => {
logger.info("Syncing pod with Valkey")
createPod() createPod()
}) })
logger.info("Gateway started")
def syncPod(): Unit = { def syncPod(): Unit = {
redis.syncPod(createPod()) redis.syncPod(createPod())
} }

View File

@@ -1,9 +1,10 @@
package modules package modules
import com.google.inject.AbstractModule import com.google.inject.AbstractModule
import logic.Gateway
class GatewayModule extends AbstractModule { class GatewayModule extends AbstractModule {
override def configure(): Unit = { override def configure(): Unit = {
bind(classOf[GatewayModule]).asEagerSingleton() bind(classOf[Gateway]).asEagerSingleton()
} }
} }

View File

@@ -31,3 +31,6 @@ GET /websocket controllers.WebsocketController.socket()
# Status # Status
GET /status controllers.StatusController.requestStatus() GET /status controllers.StatusController.requestStatus()
GET /status/:gameId controllers.StatusController.game(gameId: String) GET /status/:gameId controllers.StatusController.game(gameId: String)
# Health
GET /health/simple controllers.HealthController.simple()

View File

@@ -1,3 +1,3 @@
MAJOR=4 MAJOR=4
MINOR=20 MINOR=22
PATCH=0 PATCH=0