github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/30_mongo/m/connect.go (about)

     1  package m
     2  
     3  import (
     4  	"context"
     5  	"go.mongodb.org/mongo-driver/mongo"
     6  	"go.mongodb.org/mongo-driver/mongo/options"
     7  	"log"
     8  	"sync"
     9  )
    10  
    11  var (
    12  	_client     *mongo.Client
    13  	connectOnce sync.Once
    14  )
    15  
    16  func Connect(uri string) {
    17  	connectOnce.Do(func() {
    18  		c, err := mongo.NewClient(options.Client().ApplyURI(uri))
    19  		if err != nil {
    20  			log.Fatal(err)
    21  		}
    22  		_client = c
    23  		err = _client.Connect(context.Background())
    24  		if err != nil {
    25  			log.Fatal(err)
    26  		}
    27  	})
    28  }
    29  
    30  func GetClient() *mongo.Client {
    31  	return _client
    32  }
    33  
    34  func Disconnect() {
    35  	if _client != nil {
    36  		if err := _client.Disconnect(context.Background()); err != nil {
    37  			log.Fatal(err)
    38  		}
    39  	}
    40  }