77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
fwdb "github.com/yourorg/go-dw-platform/framework/db"
|
|
fwlogger "github.com/yourorg/go-dw-platform/framework/logger"
|
|
fwmiddleware "github.com/yourorg/go-dw-platform/framework/middleware"
|
|
|
|
"github.com/yourorg/go-dw-platform/services/template-service/handler"
|
|
"github.com/yourorg/go-dw-platform/services/template-service/repository"
|
|
"github.com/yourorg/go-dw-platform/services/template-service/service"
|
|
"github.com/yourorg/go-dw-platform/services/template-service/transformer"
|
|
)
|
|
|
|
func main() {
|
|
cfg := LoadConfig()
|
|
log := fwlogger.New("template-service")
|
|
|
|
ctx := context.Background()
|
|
|
|
pool, err := fwdb.NewPool(ctx, fwdb.Config{
|
|
DSN: cfg.DB.DSN,
|
|
MaxConns: cfg.DB.MaxConns,
|
|
MinConns: cfg.DB.MinConns,
|
|
MaxConnLifetime: cfg.DB.MaxConnLifetime,
|
|
MaxConnIdleTime: cfg.DB.MaxConnIdleTime,
|
|
})
|
|
if err != nil {
|
|
log.Error("failed to connect to database", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
defer pool.Close()
|
|
|
|
repo := repository.New(pool)
|
|
tf := transformer.New()
|
|
svc := service.New(
|
|
repo,
|
|
tf,
|
|
cfg.Batch.Size,
|
|
time.Duration(cfg.Batch.TimeoutSec)*time.Second,
|
|
cfg.Batch.MaxRetries,
|
|
cfg.Batch.RetryDelay,
|
|
)
|
|
|
|
ingestHandler := handler.New(svc, log)
|
|
healthHandler := handler.NewHealthHandler(pool)
|
|
|
|
router := gin.New()
|
|
router.Use(fwmiddleware.Logging(log))
|
|
router.Use(gin.Recovery())
|
|
|
|
router.GET("/health", healthHandler.Health)
|
|
|
|
api := router.Group("/api")
|
|
api.Use(fwmiddleware.AuthMiddleware())
|
|
api.POST("/ingest", ingestHandler.IngestOrders)
|
|
|
|
go func() {
|
|
if err := router.Run(":" + cfg.Port); err != nil {
|
|
log.Error("server stopped", "error", err)
|
|
}
|
|
}()
|
|
|
|
sigChan := make(chan os.Signal, 1)
|
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
|
<-sigChan
|
|
|
|
log.Info("shutting down gracefully")
|
|
}
|