init: initial commit

This commit is contained in:
Blizzard
2026-04-10 13:49:04 +08:00
commit 7b1588e2ff
56 changed files with 5499 additions and 0 deletions
+85
View File
@@ -0,0 +1,85 @@
package main
import (
"context"
"fmt"
)
// App struct
type App struct {
ctx context.Context
}
// NewApp creates a new App application struct
func NewApp() *App {
return &App{}
}
// startup is called when the app starts
func (a *App) startup(ctx context.Context) {
a.ctx = ctx
if err := initDB(); err != nil {
fmt.Printf("Database initialization failed: %v\n", err)
}
}
// shutdown is called when the app is closing
func (a *App) shutdown(ctx context.Context) {}
// --- Game CRUD via SQLite ---
// GetAllGames returns all user-defined games
func (a *App) GetAllGames() []Game {
return getAllGamesDB()
}
// GetActiveGameID returns the currently active game ID
func (a *App) GetActiveGameID() string {
return getActiveGameID()
}
// SetActiveGame sets the active game and saves
func (a *App) SetActiveGame(gameID string) error {
return setActiveGameID(gameID)
}
// AddGame creates a new game and saves
func (a *App) AddGame(game Game) (Game, error) {
err := addGameDB(&game)
return game, err
}
// UpdateGame updates an existing game's config
func (a *App) UpdateGame(game Game) error {
return updateGameDB(&game)
}
// DeleteGame removes a game by ID
func (a *App) DeleteGame(gameID string) error {
err := deleteGameDB(gameID)
if err != nil {
return err
}
if a.GetActiveGameID() == gameID {
games := a.GetAllGames()
if len(games) > 0 {
a.SetActiveGame(games[0].ID)
} else {
a.SetActiveGame("")
}
}
return nil
}
// --- Connection & API ---
// TestConnection tests connectivity for a game
func (a *App) TestConnection(game Game) ConnectionResult {
return testHTTPConnection(game)
}
// XRayConnection performs a request and returns the full body
func (a *App) XRayConnection(game Game) XRayResult {
return XRayConnection(game)
}