Draft: big refactor

This commit is contained in:
2025-09-16 16:03:27 +08:00
parent f527230f1e
commit c4f2b0af25
42 changed files with 684 additions and 215 deletions

View File

@@ -6,6 +6,7 @@ import (
tea "github.com/charmbracelet/bubbletea"
"github.com/go-resty/resty/v2"
"github.com/spf13/cobra"
"go.uber.org/zap"
)
var RootCmd = &cobra.Command{
@@ -15,25 +16,35 @@ var RootCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
appname := "game-tui"
tracing.InitTracer(appname)
defer tracing.DeferTracer()
tracing.Logger.
Info("client up")
client := resty.New().
SetBaseURL(args[0]).
SetDisableWarn(true)
queue := []*tea.Program{}
queue = append(queue,
tea.NewProgram(plays.NewLanding(plays.NewBase(client))))
queue = append(queue, tea.NewProgram(
plays.NewLanding(plays.NewBase(client))))
for len(queue) > 0 {
program := queue[0]
queue = queue[1:]
tracing.Logger.Info("run program")
res, err := program.Run()
if err != nil {
tracing.Logger.Error("program failed",
zap.Error(err))
panic(err)
}
err = res.(plays.Next).Next(&queue)
if err != nil {
tracing.Logger.Error("failed to generate next program",
zap.Error(err))
panic(err)
}
}
@@ -41,4 +52,7 @@ var RootCmd = &cobra.Command{
}
func init() {
RootCmd.Flags().
String("otel-endpoint", "localhost:4317",
"endpoint for otlp exporter to connect")
}

View File

@@ -16,35 +16,36 @@ import (
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.uber.org/zap"
_ "gitea.konchin.com/ytshih/inp2025/game/backend/docs"
"gitea.konchin.com/ytshih/inp2025/game/backend/handlers/api"
"gitea.konchin.com/ytshih/inp2025/game/backend/handlers/auth"
"gitea.konchin.com/ytshih/inp2025/game/backend/middlewares"
"gitea.konchin.com/ytshih/inp2025/game/implements"
"gitea.konchin.com/ytshih/inp2025/game/server/backend/api"
"gitea.konchin.com/ytshih/inp2025/game/server/backend/auth"
_ "gitea.konchin.com/ytshih/inp2025/game/server/docs"
"gitea.konchin.com/ytshih/inp2025/game/server/middlewares"
"gitea.konchin.com/ytshih/inp2025/game/tracing"
"gitea.konchin.com/ytshih/inp2025/game/utils"
)
// @title Intro. to Network Programming Game
// @version 0.0.1-alpha
// @license.name 0BSD
// @securityDefinitions.basic BasicAuth
// @BasePath /
// @title Intro. to Network Programming Game
// @version 0.0.1-alpha
// @license.name 0BSD
// @securityDefinitions.basic BasicAuth
// @BasePath /
var backendCmd = &cobra.Command{
Use: "backend",
Short: "Game backend",
Run: func(cmd *cobra.Command, args []string) {
ctx := cmd.Context()
tracing.InitTracer("game backend")
defer tracing.DeferTracer()
tracing.Logger.Ctx(ctx).
tracing.Logger.
Debug("connect to sql",
zap.String("sql.url",
"file:"+viper.GetString("sqlite-file")+"?cache=shared&mode=rwc"))
sqldb, err := sql.Open(sqliteshim.ShimName,
"file:"+viper.GetString("sqlite-file")+"?cache=shared&mode=rwc")
if err != nil {
tracing.Logger.Ctx(ctx).
tracing.Logger.
Panic("failed to init sqlite",
zap.Error(err))
panic(err)
@@ -52,7 +53,7 @@ var backendCmd = &cobra.Command{
bunDB := bun.NewDB(sqldb, sqlitedialect.New())
bunDB.AddQueryHook(bunotel.NewQueryHook(bunotel.WithDBName("sqlite")))
if err := utils.InitDB(ctx, bunDB); err != nil {
tracing.Logger.Ctx(ctx).
tracing.Logger.
Panic("failed to init db schema",
zap.Error(err))
panic(err)
@@ -91,7 +92,7 @@ var backendCmd = &cobra.Command{
apiGroup.GET("/lobby/users",
apiHandlers.GetLobbyUsers)
tracing.Logger.Ctx(ctx).
tracing.Logger.
Info("http server up",
zap.String("http.port", viper.GetString("port")))
@@ -101,6 +102,8 @@ var backendCmd = &cobra.Command{
}
func init() {
backendCmd.Flags().
String("otel-endpoint", "backend-otelcol:4317", "otelcol endpoint")
backendCmd.Flags().
String("port", "8080", "Port to listen on")
backendCmd.Flags().