| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | package dbimport (	"fmt"	"github.com/gravitl/netmaker/servercfg"	"os"	"strconv"	"github.com/gravitl/netmaker/config"	"gorm.io/driver/postgres"	"gorm.io/gorm"	"gorm.io/gorm/logger")// postgresConnector for initializing and// connecting to a postgres database.type postgresConnector struct{}// postgresConnector.connect connects and// initializes a connection to postgres.func (pg *postgresConnector) connect() (*gorm.DB, error) {	pgConf := servercfg.GetSQLConf()	dsn := fmt.Sprintf(		"host=%s port=%d user=%s password=%s dbname=%s sslmode=%s connect_timeout=5",		pgConf.Host,		pgConf.Port,		pgConf.Username,		pgConf.Password,		pgConf.DB,		pgConf.SSLMode,	)	return gorm.Open(postgres.Open(dsn), &gorm.Config{		Logger: logger.Default.LogMode(logger.Silent),	})}func GetSQLConf() config.SQLConfig {	var cfg config.SQLConfig	cfg.Host = GetSQLHost()	cfg.Port = GetSQLPort()	cfg.Username = GetSQLUser()	cfg.Password = GetSQLPass()	cfg.DB = GetSQLDB()	cfg.SSLMode = GetSQLSSLMode()	return cfg}func GetSQLHost() string {	host := "localhost"	if os.Getenv("SQL_HOST") != "" {		host = os.Getenv("SQL_HOST")	} else if config.Config.SQL.Host != "" {		host = config.Config.SQL.Host	}	return host}func GetSQLPort() int32 {	port := int32(5432)	envport, err := strconv.Atoi(os.Getenv("SQL_PORT"))	if err == nil && envport != 0 {		port = int32(envport)	} else if config.Config.SQL.Port != 0 {		port = config.Config.SQL.Port	}	return port}func GetSQLUser() string {	user := "postgres"	if os.Getenv("SQL_USER") != "" {		user = os.Getenv("SQL_USER")	} else if config.Config.SQL.Username != "" {		user = config.Config.SQL.Username	}	return user}func GetSQLPass() string {	pass := "nopass"	if os.Getenv("SQL_PASS") != "" {		pass = os.Getenv("SQL_PASS")	} else if config.Config.SQL.Password != "" {		pass = config.Config.SQL.Password	}	return pass}func GetSQLDB() string {	db := "netmaker"	if os.Getenv("SQL_DB") != "" {		db = os.Getenv("SQL_DB")	} else if config.Config.SQL.DB != "" {		db = config.Config.SQL.DB	}	return db}func GetSQLSSLMode() string {	sslmode := "disable"	if os.Getenv("SQL_SSL_MODE") != "" {		sslmode = os.Getenv("SQL_SSL_MODE")	} else if config.Config.SQL.SSLMode != "" {		sslmode = config.Config.SQL.SSLMode	}	return sslmode}
 |