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, }) }