From f475b7b8f0e6982e59f92cce04b3e18446858a06 Mon Sep 17 00:00:00 2001 From: almogbaku Date: Mon, 3 Mar 2025 10:28:05 +0200 Subject: [PATCH] fix: bug with merge --- src/cmd/root.go | 18 ++------------- src/pkg/whatsapp/init.go | 47 ++++++++++++++++++++++++++-------------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/cmd/root.go b/src/cmd/root.go index ecd558f..f75498b 100644 --- a/src/cmd/root.go +++ b/src/cmd/root.go @@ -3,8 +3,6 @@ package cmd import ( "embed" "fmt" - pkgError "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/error" - waLog "go.mau.fi/whatsmeow/util/log" "log" "net/http" "os" @@ -241,20 +239,8 @@ func runRest(_ *cobra.Command, _ []string) { })) } - waLogger := waLog.Stdout("Main", config.WhatsappLogLevel, true) - dbLogger := waLog.Stdout("Database", config.WhatsappLogLevel, true) - - db, err := whatsapp.InitDatabase(config.DBURI, dbLogger) - if err != nil { - waLogger.Errorf("Database initialization error: %v", err) - panic(pkgError.InternalServerError(fmt.Sprintf("Database initialization error: %v", err))) - } - - dbKeys, err := whatsapp.InitDatabase(config.DBKeysURI, dbLogger) - if err != nil { - waLogger.Errorf("Database initialization error: %v", err) - panic(pkgError.InternalServerError(fmt.Sprintf("Database initialization error: %v", err))) - } + db := whatsapp.InitWaDB(config.DBURI) + dbKeys := whatsapp.InitWaDB(config.DBKeysURI) cli := whatsapp.InitWaCLI(db, dbKeys) // Service diff --git a/src/pkg/whatsapp/init.go b/src/pkg/whatsapp/init.go index 479759f..8bb0d3c 100644 --- a/src/pkg/whatsapp/init.go +++ b/src/pkg/whatsapp/init.go @@ -11,6 +11,7 @@ import ( "github.com/aldinokemal/go-whatsapp-web-multidevice/config" "github.com/aldinokemal/go-whatsapp-web-multidevice/internal/websocket" + pkgError "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/error" "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/utils" "github.com/sirupsen/logrus" "go.mau.fi/whatsmeow" @@ -52,15 +53,29 @@ var ( startupTime = time.Now().Unix() ) -// InitDatabase creates and returns a database store container based on the configured URI -func InitDatabase(dbUri string, dbLog waLog.Logger) (*sqlstore.Container, error) { - if strings.HasPrefix(dbUri, "file:") { - return sqlstore.New("sqlite3", dbUri, dbLog) - } else if strings.HasPrefix(dbUri, "postgres:") { - return sqlstore.New("postgres", dbUri, dbLog) +// InitWaDB initializes the WhatsApp database connection +func InitWaDB(DBURI string) *sqlstore.Container { + log = waLog.Stdout("Main", config.WhatsappLogLevel, true) + dbLog := waLog.Stdout("Database", config.WhatsappLogLevel, true) + + storeContainer, err := initDatabase(dbLog, DBURI) + if err != nil { + log.Errorf("Database initialization error: %v", err) + panic(pkgError.InternalServerError(fmt.Sprintf("Database initialization error: %v", err))) } - return nil, fmt.Errorf("unknown database type: %s. Currently only sqlite3(file:) and postgres are supported", dbUri) + return storeContainer +} + +// initDatabase creates and returns a database store container based on the configured URI +func initDatabase(dbLog waLog.Logger, DBURI string) (*sqlstore.Container, error) { + if strings.HasPrefix(DBURI, "file:") { + return sqlstore.New("sqlite3", DBURI, dbLog) + } else if strings.HasPrefix(DBURI, "postgres:") { + return sqlstore.New("postgres", DBURI, dbLog) + } + + return nil, fmt.Errorf("unknown database type: %s. Currently only sqlite3(file:) and postgres are supported", DBURI) } // InitWaCLI initializes the WhatsApp client @@ -82,15 +97,15 @@ func InitWaCLI(storeContainer, keysStoreContainer *sqlstore.Container) *whatsmeo store.DeviceProps.Os = &osName // Configure a separated database for accelerating encryption caching - if keysStoreContainer != nil && device.ID != nil { - innerStore := sqlstore.NewSQLStore(keysStoreContainer, *device.ID) - device.Identities = innerStore - device.Sessions = innerStore - device.PreKeys = innerStore - device.SenderKeys = innerStore - device.MsgSecrets = innerStore - device.PrivacyTokens = innerStore - } + //if keysStoreContainer != nil && device.ID != nil { + // innerStore := sqlstore.NewSQLStore(keysStoreContainer, *device.ID) + // device.Identities = innerStore + // device.Sessions = innerStore + // device.PreKeys = innerStore + // device.SenderKeys = innerStore + // device.MsgSecrets = innerStore + // device.PrivacyTokens = innerStore + //} // Create and configure the client cli = whatsmeow.NewClient(device, waLog.Stdout("Client", config.WhatsappLogLevel, true))