finish world initialization, set up init on startup and on shutdown, move all models to main directory
This commit is contained in:
@@ -1,37 +1,22 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/temp_models/db"
|
||||
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/models/db"
|
||||
)
|
||||
|
||||
func (app *application) ShowText(w http.ResponseWriter, r *http.Request) {
|
||||
data, err := app.foundryApp.Test()
|
||||
dbConn := app.foundryApp.Transport.DB
|
||||
|
||||
world, err := db.GetWorld(dbConn, "kingmaker")
|
||||
if err != nil {
|
||||
app.slogger.Error("", "error", err)
|
||||
w.Write([]byte(err.Error()))
|
||||
w.Write([]byte("Got error"))
|
||||
return
|
||||
}
|
||||
|
||||
var dbGame db.Game
|
||||
|
||||
start := time.Now()
|
||||
data.ToDB(&dbGame)
|
||||
elapsed := time.Since(start)
|
||||
|
||||
app.slogger.Info("Game data successfully parsed", "elapsedtime", elapsed)
|
||||
|
||||
byteData, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
app.slogger.Error("", "error", err)
|
||||
w.Write([]byte(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
w.Write(byteData)
|
||||
w.Write([]byte(fmt.Sprintf("Got world with name %s, core_version - %s, next_session - %v", world.ID, world.CoreVersion, world.NextSession)))
|
||||
}
|
||||
|
||||
func (app *application) WhenNextSession(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
@@ -13,7 +13,6 @@ func (app *application) healthcheckHandler(w http.ResponseWriter, r *http.Reques
|
||||
"status": app.foundryApp.Status,
|
||||
"is_available": app.foundryApp.IsAvailable,
|
||||
},
|
||||
"config": app.foundryApp.GetHTTP(),
|
||||
}
|
||||
err := app.writeJSON(w, http.StatusOK, env, nil)
|
||||
if err != nil {
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"log/slog"
|
||||
"net/http/cookiejar"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry"
|
||||
@@ -73,7 +74,7 @@ func openDB(cfg config) (*sqlx.DB, error) {
|
||||
}
|
||||
|
||||
// TODO: change default values
|
||||
func (app *application) parseFlags() *requests.FoundryHttpRequest {
|
||||
func (app *application) parseFlags() *transport.FoundryTransportData {
|
||||
flag.StringVar(&app.cfg.port, "port", ":9090", "Service port")
|
||||
flag.StringVar(&app.cfg.env, "env", "development", "Enivornment (development|staging|production)")
|
||||
|
||||
@@ -85,15 +86,20 @@ func (app *application) parseFlags() *requests.FoundryHttpRequest {
|
||||
var mode string
|
||||
flag.StringVar(&mode, "service_mode", "api", "Type of service mode(api|discord|tg)")
|
||||
|
||||
foundryHttpData := requests.FoundryHttpRequest{SessionID: nil}
|
||||
flag.StringVar(&foundryHttpData.Host, "foundry_host", "127.0.0.1", "Address to connect to Foundry")
|
||||
flag.StringVar(&foundryHttpData.Password, "foundry_pass", "", "Password to connect to Foundry")
|
||||
var foundryTransportData transport.FoundryTransportData
|
||||
foundryTransportData.HttpConfig = &requests.FoundryHttpRequest{SessionID: nil}
|
||||
flag.StringVar(&foundryTransportData.HttpConfig.Host, "foundry_host", "127.0.0.1", "Address to connect to Foundry")
|
||||
flag.StringVar(&foundryTransportData.HttpConfig.Password, "foundry_pass", "", "Password to connect to Foundry")
|
||||
|
||||
var logLevelStr string
|
||||
flag.StringVar(&logLevelStr, "log_level", "info", "Password to connect to Foundry(debug|info|warn|error)")
|
||||
|
||||
var worlds string
|
||||
flag.StringVar(&worlds, "foundry-worlds", "", "Worlds that initialize in db on startup")
|
||||
flag.Parse()
|
||||
|
||||
foundryTransportData.Worlds = strings.Split(worlds, ",")
|
||||
|
||||
app.cfg.mode = service_mode(mode)
|
||||
|
||||
logLevel, ok := StringToLogLevel[logLevelStr]
|
||||
@@ -105,20 +111,21 @@ func (app *application) parseFlags() *requests.FoundryHttpRequest {
|
||||
if !ok {
|
||||
app.slogger.Warn("Wrong log level. Started with log_level=info", "received", logLevelStr)
|
||||
}
|
||||
return &foundryHttpData
|
||||
foundryTransportData.Logger = app.slogger
|
||||
return &foundryTransportData
|
||||
}
|
||||
|
||||
// TODO: Handle DB connection error
|
||||
func main() {
|
||||
app := application{foundryApp: &foundry.FoundryApi{}}
|
||||
|
||||
foundryHttpData := app.parseFlags()
|
||||
foundryTransportData := app.parseFlags()
|
||||
jar, err := cookiejar.New(nil)
|
||||
if err != nil {
|
||||
app.slogger.Error("Error", "text", err.Error())
|
||||
return
|
||||
}
|
||||
foundryHttpData.Jar = jar
|
||||
foundryTransportData.HttpConfig.Jar = jar
|
||||
|
||||
app.slogger.Info("", "dsn", app.cfg.db.dsn)
|
||||
|
||||
@@ -129,8 +136,15 @@ func main() {
|
||||
}
|
||||
defer db.Close()
|
||||
app.slogger.Info("Database connection pool established")
|
||||
foundryTransportData.DbConn = db
|
||||
|
||||
app.foundryApp.SetTransport(transport.NewFoundryTransport(foundryTransportData))
|
||||
err = app.foundryApp.PrepareDB()
|
||||
if err != nil {
|
||||
app.slogger.Error("Error on preparing database", "err", err)
|
||||
return
|
||||
}
|
||||
|
||||
app.foundryApp.SetTransport(transport.NewFoundryTransport(db, app.slogger, foundryHttpData))
|
||||
go app.foundryApp.StartListenFoundry()
|
||||
|
||||
app.serve()
|
||||
|
||||
Reference in New Issue
Block a user