From d15d1422da7e2550fa280bc9daa211fa43a08884 Mon Sep 17 00:00:00 2001 From: Sebastian Olsson Date: Sun, 13 Apr 2025 18:39:30 +0200 Subject: [PATCH] Added function to create a new database if it doesn't exist --- internal/db/dbHelper.go | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/internal/db/dbHelper.go b/internal/db/dbHelper.go index 7faa3d9..33900f1 100644 --- a/internal/db/dbHelper.go +++ b/internal/db/dbHelper.go @@ -78,6 +78,22 @@ func ResetGameIdSeq() { } } +func createDb(host string, port string, user string, password string, dbname string) { + conninfo := fmt.Sprintf("host=%s port=%s user=%s password=%s sslmode=disable", host, port, user, password) + db, err := sql.Open("postgres", conninfo) + defer db.Close() + + if err != nil { + log.Fatal(err) + } + _, err = db.Exec("create database " + dbname) + if err != nil { + //handle the error + log.Fatal(err) + } + log.Println("Finished creating database") +} + func Migrate_db(host string, port string, user string, password string, dbname string) { migrationInfo := fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=disable", user, password, host, port, dbname) @@ -88,6 +104,19 @@ func Migrate_db(host string, port string, user string, password string, dbname s if err != nil { log.Println(err) } + + _, err = db.Query("select * from game") + if err != nil { + log.Println(err) + createDb(host, port, user, password, dbname) + + db, err = sql.Open("postgres", migrationInfo) + if err != nil { + log.Fatal(err) + } + + } + driver, err := postgres.WithInstance(db, &postgres.Config{}) if err != nil { log.Println(err) @@ -114,11 +143,11 @@ func Migrate_db(host string, port string, user string, password string, dbname s fmt.Println("Migration version before: ", version) - err = m.Force(1) + //err = m.Force(1) //err = m.Up() // or m.Steps(2) if you want to explicitly set the number of migrations to run - if err != nil { - log.Println("Force err: ", err) - } + //if err != nil { + // log.Println("Force err: ", err) + //} err = m.Migrate(2) //err = m.Up() // or m.Steps(2) if you want to explicitly set the number of migrations to run