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 }