refactor foundry lib structure; add transport classes for db,http,websocket; add action interface instead of multiple function that accepts action classes; add changing foundry status on websocket responses
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry"
|
||||
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/requests"
|
||||
"gitea.local.lab/Lbenedar/foundry_helper_service/internal/foundry/transport"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
@@ -38,7 +39,7 @@ type config struct {
|
||||
|
||||
type application struct {
|
||||
cfg config
|
||||
foundryApp *foundry.Foundry
|
||||
foundryApp *foundry.FoundryApi
|
||||
slogger *slog.Logger
|
||||
logger *log.Logger
|
||||
}
|
||||
@@ -69,7 +70,7 @@ func openDB(cfg config) (*sql.DB, error) {
|
||||
}
|
||||
|
||||
// TODO: change default values
|
||||
func (app *application) parseFlags() {
|
||||
func (app *application) parseFlags() *requests.FoundryHttpRequest {
|
||||
flag.StringVar(&app.cfg.port, "port", ":9090", "Service port")
|
||||
|
||||
flag.StringVar(&app.cfg.db.dsn, "db-dsn", "file:db/default.db?cache=shared", "PostgreSQL DSN")
|
||||
@@ -80,9 +81,9 @@ func (app *application) parseFlags() {
|
||||
var mode string
|
||||
flag.StringVar(&mode, "service_mode", "api", "Type of service mode(api|discord|tg)")
|
||||
|
||||
foundryConfig := requests.Config{SessionID: ""}
|
||||
flag.StringVar(&foundryConfig.Host, "foundry_host", "127.0.0.1", "Address to connect to Foundry")
|
||||
flag.StringVar(&foundryConfig.Password, "foundry_pass", "", "Password to connect to Foundry")
|
||||
foundryHttpData := requests.FoundryHttpRequest{SessionID: ""}
|
||||
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 logLevelStr string
|
||||
flag.StringVar(&logLevelStr, "log_level", "info", "Password to connect to Foundry(debug|info|warn|error)")
|
||||
@@ -90,7 +91,7 @@ func (app *application) parseFlags() {
|
||||
flag.Parse()
|
||||
|
||||
app.cfg.mode = service_mode(mode)
|
||||
app.foundryApp.SetConfig(&foundryConfig)
|
||||
// app.foundryApp.SetConfig(&foundryConfig)
|
||||
|
||||
logLevel, ok := StringToLogLevel[logLevelStr]
|
||||
if !ok {
|
||||
@@ -101,6 +102,7 @@ func (app *application) parseFlags() {
|
||||
if !ok {
|
||||
app.slogger.Warn("Wrong log level. Started with log_level=info", "received", logLevelStr)
|
||||
}
|
||||
return &foundryHttpData
|
||||
}
|
||||
|
||||
// TODO: Handle application exit if wrong data
|
||||
@@ -108,39 +110,18 @@ func (app *application) StartListenFoundry() {
|
||||
var err error
|
||||
|
||||
for {
|
||||
if !app.foundryApp.HasSessionId() {
|
||||
err = app.foundryApp.SetUpSessionId()
|
||||
if err != nil {
|
||||
app.slogger.Error("Error raised", "err", err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
err = app.foundryApp.ConnectToFoundry()
|
||||
if err != nil {
|
||||
app.slogger.Error("Error raised", "err", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = app.foundryApp.ConnectToWebSocket()
|
||||
if err != nil {
|
||||
app.slogger.Error("Error raised", "err", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = app.foundryApp.StartListen()
|
||||
if err != nil && err != foundry.ListenIsDone {
|
||||
app.slogger.Error("Error raised", "err", err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
app := application{foundryApp: foundry.NewFoundry()}
|
||||
app := application{foundryApp: &foundry.FoundryApi{}}
|
||||
|
||||
app.parseFlags()
|
||||
app.foundryApp.SetLogger(app.slogger)
|
||||
foundryHttpData := app.parseFlags()
|
||||
|
||||
app.slogger.Info("", "dsn", app.cfg.db.dsn)
|
||||
|
||||
@@ -152,8 +133,7 @@ func main() {
|
||||
defer db.Close()
|
||||
app.slogger.Info("Database connection pool established")
|
||||
|
||||
app.foundryApp.CreateNewDataModels(db)
|
||||
|
||||
app.foundryApp.Transport = transport.NewFoundryTransport(db, app.slogger, foundryHttpData)
|
||||
go app.StartListenFoundry()
|
||||
|
||||
errLog := slog.NewLogLogger(app.slogger.Handler(), slog.LevelError)
|
||||
|
||||
Reference in New Issue
Block a user