42 lines
1.2 KiB
Go
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
|
|
}
|