diff --git a/database/postgres.go b/database/postgres.go index c87e87c6..a28f49a6 100644 --- a/database/postgres.go +++ b/database/postgres.go @@ -1,9 +1,12 @@ package database import ( + "context" "database/sql" "errors" "fmt" + "github.com/gravitl/netmaker/db" + "time" "github.com/gravitl/netmaker/servercfg" _ "github.com/lib/pq" @@ -34,15 +37,18 @@ func getPGConnString() string { } func initPGDB() error { - connString := getPGConnString() + gormDB := db.FromContext(db.WithContext(context.TODO())) + var dbOpenErr error - PGDB, dbOpenErr = sql.Open("postgres", connString) + PGDB, dbOpenErr = gormDB.DB() if dbOpenErr != nil { return dbOpenErr } - dbOpenErr = PGDB.Ping() - return dbOpenErr + PGDB.SetMaxOpenConns(5) + PGDB.SetConnMaxLifetime(time.Hour) + + return PGDB.Ping() } func pgCreateTable(tableName string) error { @@ -134,7 +140,7 @@ func pgFetchRecords(tableName string) (map[string]string, error) { } func pgCloseDB() { - PGDB.Close() + //PGDB.Close() } func pgIsConnected() bool { diff --git a/database/sqlite.go b/database/sqlite.go index fa1263e9..7880861b 100644 --- a/database/sqlite.go +++ b/database/sqlite.go @@ -1,10 +1,11 @@ package database import ( + "context" "database/sql" "errors" - "os" - "path/filepath" + "github.com/gravitl/netmaker/db" + "time" _ "github.com/mattn/go-sqlite3" // need to blank import this package ) @@ -29,21 +30,17 @@ var SQLITE_FUNCTIONS = map[string]interface{}{ } func initSqliteDB() error { - // == create db file if not present == - if _, err := os.Stat("data"); os.IsNotExist(err) { - os.Mkdir("data", 0700) - } - dbFilePath := filepath.Join("data", dbFilename) - if _, err := os.Stat(dbFilePath); os.IsNotExist(err) { - os.Create(dbFilePath) - } - // == "connect" the database == + gormDB := db.FromContext(db.WithContext(context.TODO())) + var dbOpenErr error - SqliteDB, dbOpenErr = sql.Open("sqlite3", dbFilePath) + SqliteDB, dbOpenErr = gormDB.DB() if dbOpenErr != nil { return dbOpenErr } - SqliteDB.SetMaxOpenConns(1) + + SqliteDB.SetMaxOpenConns(5) + SqliteDB.SetConnMaxLifetime(time.Hour) + return nil } @@ -134,7 +131,7 @@ func sqliteFetchRecords(tableName string) (map[string]string, error) { } func sqliteCloseDB() { - SqliteDB.Close() + //SqliteDB.Close() } func sqliteConnected() bool { diff --git a/main.go b/main.go index 743b0200..5743bb05 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,8 @@ import ( "encoding/json" "flag" "fmt" + "github.com/gravitl/netmaker/db" + "github.com/gravitl/netmaker/schema" "os" "os/signal" "path/filepath" @@ -18,7 +20,6 @@ import ( "github.com/gravitl/netmaker/config" controller "github.com/gravitl/netmaker/controllers" "github.com/gravitl/netmaker/database" - "github.com/gravitl/netmaker/db" "github.com/gravitl/netmaker/functions" "github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/logic" @@ -26,7 +27,6 @@ import ( "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/mq" "github.com/gravitl/netmaker/netclient/ncutils" - "github.com/gravitl/netmaker/schema" "github.com/gravitl/netmaker/servercfg" "github.com/gravitl/netmaker/serverctl" _ "go.uber.org/automaxprocs" @@ -102,15 +102,19 @@ func initialize() { // Client Mode Prereq Check logger.FatalLog("error: must set NODE_ID, currently blank") } - if err = database.InitializeDatabase(); err != nil { - logger.FatalLog("Error connecting to database: ", err.Error()) - } // initialize sql schema db. err = db.InitializeDB(schema.ListModels()...) if err != nil { - logger.FatalLog("Error connecting to v1 database: ", err.Error()) + logger.FatalLog("error connecting to database: ", err.Error()) } + logger.Log(0, "database successfully connected") + + // initialize kv schema db. + if err = database.InitializeDatabase(); err != nil { + logger.FatalLog("error initializing database: ", err.Error()) + } + initializeUUID() //initialize cache _, _ = logic.GetNetworks()