chat_back_go/internal/database/database.go

48 lines
961 B
Go

package database
import (
"github.com/jmoiron/sqlx"
"github.com/redis/go-redis/v9"
"go.mongodb.org/mongo-driver/v2/mongo"
"git.urec56.ru/urec/chat_back_go/config"
"git.urec56.ru/urec/chat_back_go/internal/logger"
)
func New(cfg config.Config, log *logger.Logger) (*sqlx.DB, *redis.Client, *mongo.Client, func(), error) {
db, err := NewPostgres(cfg.Psql)
if err != nil {
return nil, nil, nil, nil, err
}
log.Info("postgres initialized")
rdb, err := NewRedis(cfg.Redis)
if err != nil {
return nil, nil, nil, nil, err
}
log.Info("redis initialized")
mc, err := NewMongo(cfg.Mongo)
if err != nil {
return nil, nil, nil, nil, err
}
log.Info("mongo initialized")
closeDBs := func() {
if err := db.Close(); err != nil {
log.Error(err)
}
if err = rdb.Close(); err != nil {
log.Error(err)
}
if err = mc.Disconnect(nil); err != nil {
log.Error(err)
}
log.Info("dbs closed")
}
return db, rdb, mc, closeDBs, nil
}