Resolved the MME Standalone Deployment Issue 84/15184/2
authorAshish Jain <jain.ashish@samsung.com>
Tue, 4 Nov 2025 07:18:17 +0000 (07:18 +0000)
committerAshish Jain <jain.ashish@samsung.com>
Thu, 6 Nov 2025 06:40:40 +0000 (06:40 +0000)
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 <jain.ashish@samsung.com>
main.go

diff --git a/main.go b/main.go
index ed29860..3f42ea9 100644 (file)
--- 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 ",