Draft: big refactor
This commit is contained in:
48
workflows/wordleServer.go
Normal file
48
workflows/wordleServer.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package workflows
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"gitea.konchin.com/ytshih/inp2025/game/implements"
|
||||
"gitea.konchin.com/ytshih/inp2025/game/server/middlewares"
|
||||
"gitea.konchin.com/ytshih/inp2025/game/server/wordle"
|
||||
"gitea.konchin.com/ytshih/inp2025/game/tracing"
|
||||
"github.com/uptrace/bunrouter"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type ShutdownFunc = func()
|
||||
|
||||
func WordleServer(addr string) ShutdownFunc {
|
||||
handlers := wordle.NewHandlers()
|
||||
middlewareHandlers := middlewares.NewHandlers(
|
||||
implements.NewBunDatabase(nil))
|
||||
|
||||
router := bunrouter.New()
|
||||
|
||||
apiGroup := router.NewGroup("/api").
|
||||
Use(middlewareHandlers.ErrorHandler)
|
||||
apiGroup.GET("/state",
|
||||
handlers.WSGetState)
|
||||
apiGroup.POST("/guess",
|
||||
handlers.WSPostGuess)
|
||||
|
||||
httpServer = &http.Server{
|
||||
Addr: addr,
|
||||
Handler: http.Handler(router),
|
||||
}
|
||||
if err := httpServer.ListenAndServe(); err != http.ErrServerClosed {
|
||||
tracing.Logger.Panic("failed to start http server",
|
||||
zap.Error(err))
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return func() {
|
||||
if err := httpServer.Shutdown(context.Background()); err != nil {
|
||||
tracing.Logger.Panic("failed to shutdown server",
|
||||
zap.Error(err))
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user