48 lines
961 B
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
|
|
}
|