Spaces:
Paused
Paused
| // In file: internal/db/database.go | |
| package db | |
| import ( | |
| "TelegramCloud/tgf/config" | |
| "context" | |
| "time" | |
| "go.mongodb.org/mongo-driver/mongo" | |
| "go.mongodb.org/mongo-driver/mongo/options" | |
| "go.uber.org/zap" | |
| ) | |
| var ( | |
| Client *mongo.Client | |
| Links *mongo.Collection | |
| Users *mongo.Collection | |
| OTPs *mongo.Collection | |
| Files *mongo.Collection | |
| // User management instance | |
| UserMgr *UserManager | |
| // User bot management instance | |
| UserBotMgr *UserBotManager | |
| ) | |
| // InitDatabase initializes the MongoDB connection. | |
| func InitDatabase(log *zap.Logger) error { | |
| if config.ValueOf.DB_URI == "" { | |
| log.Warn("DB_URI is not set. Proactive link refreshing will be disabled.") | |
| return nil // Not a fatal error, the feature is just disabled. | |
| } | |
| serverAPI := options.ServerAPI(options.ServerAPIVersion1) | |
| opts := options.Client().ApplyURI(config.ValueOf.DB_URI).SetServerAPIOptions(serverAPI) | |
| ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) | |
| defer cancel() | |
| client, err := mongo.Connect(ctx, opts) | |
| if err != nil { | |
| return err | |
| } | |
| // Ping the server to verify connection | |
| if err := client.Ping(ctx, nil); err != nil { | |
| return err | |
| } | |
| // Console log to confirm database connection | |
| log.Sugar().Info("✅ Successfully connected to MongoDB database!") | |
| Client = client | |
| database := client.Database("tgf_dev") // Use a consistent database name | |
| Links = database.Collection("links") | |
| Users = database.Collection("users") | |
| OTPs = database.Collection("otps") | |
| Files = database.Collection("files") | |
| // Initialize UserManager | |
| UserMgr = NewUserManager(database, log) | |
| // Initialize UserBotManager with encryption key from config | |
| encryptionKey := config.ValueOf.BotEncryptionKey | |
| if encryptionKey == "" { | |
| encryptionKey = "default-encryption-key-change-me" // Fallback key | |
| log.Warn("BotEncryptionKey not set in config, using default key") | |
| } | |
| UserBotMgr = NewUserBotManager(database, log, encryptionKey) | |
| log.Info("MongoDB connection established successfully.") | |
| return nil | |
| } |