customer/cmd/sse_bench/app/app.go
2024-11-21 16:05:09 +03:00

40 lines
1.0 KiB
Go

package app
import (
"context"
"errors"
"fmt"
"os/signal"
"penahub.gitlab.yandexcloud.net/pena-services/customer/cmd/sse_bench/repository"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
"penahub.gitlab.yandexcloud.net/pena-services/customer/pkg/closer"
"syscall"
"time"
)
func Run(config *models.Config, logger *zap.Logger) (appErr error) {
defer func() {
if recovered := recover(); recovered != nil {
appErr = errors.New("recovered panic on application run")
logger.Error("recovered panic on application run", zap.Any("recovered", recovered))
}
}()
closer := closer.New()
ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
defer cancel()
mongoDB, err := mongo.Connect(ctx, &mongo.ConnectDeps{
Configuration: &config.Database,
Timeout: 10 * time.Second,
})
if err != nil {
return fmt.Errorf("failed connection to db: %w", err)
}
accountRepo := repository.NewAccountRepository(repository.Deps{
Logger: logger,
MongoDB: mongoDB,
})
}