This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Files
schisandra-cloud-album/core/mongodb.go
2024-09-24 21:37:37 +08:00

42 lines
1.2 KiB
Go

package core
import (
"context"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"schisandra-cloud-album/global"
"time"
)
// InitMongoDB initializes the MongoDB connection
func InitMongoDB() {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
clientOptions := options.Client().ApplyURI(global.CONFIG.MongoDB.MongoDsn())
clientOptions.SetAuth(options.Credential{
AuthMechanism: "SCRAM-SHA-256",
AuthMechanismProperties: nil,
AuthSource: global.CONFIG.MongoDB.AuthSource,
Username: global.CONFIG.MongoDB.User,
Password: global.CONFIG.MongoDB.Password,
PasswordSet: true,
})
clientOptions.SetConnectTimeout(time.Duration(global.CONFIG.MongoDB.Timeout) * time.Second)
clientOptions.SetMaxPoolSize(global.CONFIG.MongoDB.MaxOpenConn)
clientOptions.SetMaxConnecting(global.CONFIG.MongoDB.MaxIdleConn)
connect, err := mongo.Connect(ctx, clientOptions)
if err != nil {
global.LOG.Fatalf(err.Error())
return
}
// Check the connection
err = connect.Ping(context.TODO(), nil)
if err != nil {
global.LOG.Fatalf(err.Error())
return
}
global.MongoDB = connect
}