fx build fix
This commit is contained in:
2
api/fx/ingestor/.gitignore
vendored
2
api/fx/ingestor/.gitignore
vendored
@@ -1,3 +1,3 @@
|
|||||||
internal/generated
|
internal/generated
|
||||||
.gocache
|
.gocache
|
||||||
app
|
/app
|
||||||
|
|||||||
82
api/fx/ingestor/internal/app/app.go
Normal file
82
api/fx/ingestor/internal/app/app.go
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
package app
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/tech/sendico/fx/ingestor/internal/appversion"
|
||||||
|
"github.com/tech/sendico/fx/ingestor/internal/config"
|
||||||
|
"github.com/tech/sendico/fx/ingestor/internal/fmerrors"
|
||||||
|
"github.com/tech/sendico/fx/ingestor/internal/ingestor"
|
||||||
|
"github.com/tech/sendico/fx/ingestor/internal/metrics"
|
||||||
|
mongostorage "github.com/tech/sendico/fx/storage/mongo"
|
||||||
|
"github.com/tech/sendico/pkg/api/routers/health"
|
||||||
|
"github.com/tech/sendico/pkg/db"
|
||||||
|
"github.com/tech/sendico/pkg/mlogger"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
const DefaultConfigPath = "config.yml"
|
||||||
|
|
||||||
|
type App struct {
|
||||||
|
logger mlogger.Logger
|
||||||
|
cfg *config.Config
|
||||||
|
}
|
||||||
|
|
||||||
|
func New(logger mlogger.Logger, cfgPath string) (*App, error) {
|
||||||
|
if logger == nil {
|
||||||
|
return nil, fmerrors.New("app: logger is nil")
|
||||||
|
}
|
||||||
|
path := strings.TrimSpace(cfgPath)
|
||||||
|
if path == "" {
|
||||||
|
path = DefaultConfigPath
|
||||||
|
}
|
||||||
|
cfg, err := config.Load(path)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &App{
|
||||||
|
logger: logger,
|
||||||
|
cfg: cfg,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *App) Run(ctx context.Context) error {
|
||||||
|
metricsSrv, err := metrics.NewServer(a.logger, a.cfg.MetricsConfig())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
a.logger.Debug("Metrics server initialised")
|
||||||
|
defer metricsSrv.Close(context.Background())
|
||||||
|
|
||||||
|
conn, err := db.ConnectMongo(a.logger, a.cfg.Database)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer conn.Disconnect(context.Background())
|
||||||
|
a.logger.Debug("MongoDB connection established")
|
||||||
|
|
||||||
|
repo, err := mongostorage.New(a.logger, conn)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
a.logger.Debug("Storage repository initialised")
|
||||||
|
|
||||||
|
service, err := ingestor.New(a.logger, a.cfg, repo)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
a.logger.Info("Starting FX ingestor service", zap.String("version", appversion.Create().Info()))
|
||||||
|
metricsSrv.SetStatus(health.SSRunning)
|
||||||
|
|
||||||
|
if err := service.Run(ctx); err != nil {
|
||||||
|
if !errors.Is(err, context.Canceled) { // ignore termination reques error
|
||||||
|
a.logger.Error("Ingestor service exited with error", zap.Error(err))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
a.logger.Info("Ingestor service stopped")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user