package initialize import ( "context" "gitea.pena/PenaSide/codeword/internal/repository" mdb "gitea.pena/PenaSide/common/mongo" "go.mongodb.org/mongo-driver/mongo" "go.uber.org/zap" "time" ) func MongoDB(ctx context.Context, cfg Config) (*mongo.Database, error) { newCtx, cancel := context.WithTimeout(ctx, 10*time.Second) defer cancel() mongoDeps := &mdb.ConnectDeps{ Configuration: &cfg.ExternalCfg.Database, Timeout: 10 * time.Second, } db, err := mdb.Connect(newCtx, mongoDeps) if err != nil { return nil, err } err = db.Client().Ping(newCtx, nil) if err != nil { return nil, err } return db, nil } func InitDatabaseIndexes(ctx context.Context, mdb *mongo.Database, logger *zap.Logger) error { if err := repository.InitPromoCodeIndexes(ctx, mdb.Collection("promoCodes")); err != nil { logger.Error("Failed to initialize promoCodes indexes", zap.Error(err)) return err } return nil }