64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
// Package service contain the main service runner
|
|
package service
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
|
|
"quantex.com/qfixpt/src/app"
|
|
"quantex.com/qfixpt/src/client/api/rest"
|
|
"quantex.com/qfixpt/src/client/data"
|
|
"quantex.com/qfixpt/src/client/fix"
|
|
googlechat "quantex.com/qfixpt/src/client/notify/google"
|
|
"quantex.com/qfixpt/src/client/store"
|
|
"quantex.com/qfixpt/src/client/store/external"
|
|
"quantex.com/qfixpt/src/cmd"
|
|
)
|
|
|
|
func Runner(cfg app.Config) error {
|
|
slog.Info("Hello Try Service")
|
|
|
|
notify := googlechat.New(cfg.Notify.Google)
|
|
|
|
extConfig := external.Config{
|
|
QApixPort: cfg.APIBasePort,
|
|
QApixHost: cfg.QApixHost,
|
|
External: cfg.External,
|
|
QApixToken: cfg.QApixToken,
|
|
}
|
|
|
|
storeConfig := store.Config{
|
|
MultiDB: cfg.MultiDB,
|
|
External: extConfig,
|
|
}
|
|
|
|
appStore, err := store.New(storeConfig)
|
|
if err != nil {
|
|
return fmt.Errorf("error trying to create store %w", err)
|
|
}
|
|
|
|
userData := data.New()
|
|
|
|
// Initialize FIX Post-Trade Manager.
|
|
fixManager := fix.NewManager(cfg.FIX, appStore, notify)
|
|
if err = fixManager.Start(); err != nil {
|
|
return fmt.Errorf("error starting FIX initiator: %w", err)
|
|
}
|
|
defer fixManager.Stop()
|
|
|
|
apiConfig := rest.Config{
|
|
Port: cfg.APIBasePort,
|
|
AllowedOrigins: cfg.AllowedOrigins,
|
|
External: cfg.External,
|
|
AuthorizedServices: cfg.AuthorizedServices,
|
|
EnableJWTAuth: cfg.EnableJWTAuth,
|
|
}
|
|
|
|
api := rest.New(userData, appStore, fixManager, apiConfig, notify)
|
|
api.Run()
|
|
|
|
cmd.WaitForInterruptSignal(nil)
|
|
|
|
return nil
|
|
}
|