From a2de05a2331e982a74f5049464cbadfddbec809c Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Tue, 4 Nov 2025 07:18:17 +0000 Subject: [PATCH] Resolved the MME Standalone Deployment Issue Adding a check to verify if "training_manager_database" exists, and if it doesn't exists, create it. Issue-Id: AIMLFW-307 Change-Id: Ibc800088b3a079ceafb961ad3137b22ed1854d34 Signed-off-by: ashishj1729 --- main.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/main.go b/main.go index ed29860..3f42ea9 100644 --- a/main.go +++ b/main.go @@ -18,6 +18,7 @@ limitations under the License. package main import ( + "database/sql" "fmt" "net/http" "os" @@ -44,6 +45,41 @@ func main() { logging.INFO("config mgr prepared", "configmgr", configManager) // setup the database connection + // Step 1: Connect to the default 'postgres' database + defaultDSN := fmt.Sprintf( + "host=%s user=%s password=%s dbname=postgres port=%s sslmode=disable", + configManager.DB.PG_HOST, + configManager.DB.PG_USER, + configManager.DB.PG_PASSWORD, + configManager.DB.PG_PORT, + ) + + defaultDB, err := sql.Open("postgres", defaultDSN) + if err != nil { + logging.ERROR(fmt.Sprintf("Failed to connect to default database: %v", err)) + } + defer defaultDB.Close() + + // Step 2: Check if target database exists + var exists bool + checkQuery := fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM pg_database WHERE datname = '%s')", configManager.DB.PG_DBNAME) + err = defaultDB.QueryRow(checkQuery).Scan(&exists) + if err != nil { + logging.ERROR(fmt.Sprintf("Failed to check database existence: %v", err)) + } + + // Step 3: Create database if missing + if !exists { + createQuery := fmt.Sprintf("CREATE DATABASE %s", configManager.DB.PG_DBNAME) + _, err = defaultDB.Exec(createQuery) + if err != nil { + logging.ERROR(fmt.Sprintf("Failed to create database %s: %v", configManager.DB.PG_DBNAME, err)) + } + logging.INFO(fmt.Sprintf("Database '%s' created successfully.", configManager.DB.PG_DBNAME)) + } else { + logging.INFO(fmt.Sprintf("Database '%s' already exists.", configManager.DB.PG_DBNAME)) + } + // connection string DSN := fmt.Sprintf( "host=%s user=%s password=%s dbname=%s port=%s sslmode=disable ", -- 2.16.6