diff --git a/src/api/go.mod b/src/api/go.mod new file mode 100644 index 0000000..d2e49e8 --- /dev/null +++ b/src/api/go.mod @@ -0,0 +1,8 @@ +module api + +go 1.19 + +require ( + github.com/go-sql-driver/mysql v1.6.0 + github.com/joho/godotenv v1.4.0 +) diff --git a/src/api/go.sum b/src/api/go.sum new file mode 100644 index 0000000..797f568 --- /dev/null +++ b/src/api/go.sum @@ -0,0 +1,4 @@ +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= +github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= diff --git a/src/api/helper/10_ConnectDB.go b/src/api/helper/10_ConnectDB.go new file mode 100644 index 0000000..4e5b7fd --- /dev/null +++ b/src/api/helper/10_ConnectDB.go @@ -0,0 +1,18 @@ +package helper + +import ( + "database/sql" + "fmt" + + _ "github.com/go-sql-driver/mysql" +) + +// docker run --name mysqldb -e MYSQL_ROOT_PASSWORD=rootpw -p 3307:3306 -d mysql:latest +func ConnectDB() { + db_string := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", Db_User, Db_Pass, Db_Host, Db_Port, Db_Default_Db) + Db, err := sql.Open("mysql", db_string) + if err != nil { + LogErrorFatal(err) + } + defer Db.Close() +} diff --git a/src/api/helper/10_LoadEnv.go b/src/api/helper/10_LoadEnv.go new file mode 100644 index 0000000..8576ec3 --- /dev/null +++ b/src/api/helper/10_LoadEnv.go @@ -0,0 +1,42 @@ +package helper + +import ( + "log" + "os" + + "github.com/joho/godotenv" +) + +func Loadenv() { + GetConfigFile() + err := godotenv.Load() + LogErrorWarning(err) +} + +func GetConfigFile() { + dotenv_exists := FileExists(".env") + if dotenv_exists { + godotenv.Load(".env") + LogInfo(".env file found, using prefered values") + } else { + LogInfo("No .env file found, using default values") + } + GetDefaults() +} + +func Set_logfile() { + f, err := os.OpenFile(Log_file, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) + if err != nil { + log.Fatalf("error opening file: %v", err) + } + defer f.Close() + log.SetOutput(f) +} + +func FileExists(filename string) bool { + info, err := os.Stat(filename) + if os.IsNotExist(err) { + return false + } + return !info.IsDir() +} diff --git a/src/api/helper/20_CheckError.go b/src/api/helper/20_CheckError.go new file mode 100644 index 0000000..eb847ae --- /dev/null +++ b/src/api/helper/20_CheckError.go @@ -0,0 +1,21 @@ +package helper + +import "log" + +func LogErrorWarning(err error) { + if err != nil { + log.Printf("WARNING: %v \n", err) + } +} + +func LogErrorFatal(err error) { + if err != nil { + log.Fatalf("ERROR: %v \n", err) + } +} + +func LogInfo(info string) { + if info != "" { + log.Printf("INFO: %v \n", info) + } +} diff --git a/src/api/helper/20_GetDefaults.go b/src/api/helper/20_GetDefaults.go new file mode 100644 index 0000000..3db6bb7 --- /dev/null +++ b/src/api/helper/20_GetDefaults.go @@ -0,0 +1,72 @@ +package helper + +import "os" + +func GetDefaults() { + // Gin Variables + // Set IP + env_ip, present := os.LookupEnv("LISTEN_IP") + if present { + Ip = env_ip + } else { + Ip = default_ip + } + // Set Port + env_port, present := os.LookupEnv("LISTEN_PORT") + if present { + Http_port = env_port + } else { + Http_port = default_port + } + // Log Variables + // Set Logfile + env_log_file, present := os.LookupEnv("LOG_FILE") + if present { + Log_file = env_log_file + } else { + Log_file = default_log_file + } + // Set Gin log file + env_gin_log_file, present := os.LookupEnv("GIN_LOG_FILE") + if present { + Gin_log_file = env_gin_log_file + } else { + Gin_log_file = default_gin_log_file + } + // DB Variables + // Set DB User + env_db_user, present := os.LookupEnv("DB_USER") + if present { + Db_User = env_db_user + } else { + Db_User = default_DB_User + } + // Set DB Password + env_db_pass, present := os.LookupEnv("DB_PASSWORD") + if present { + Db_Pass = env_db_pass + } else { + Db_Pass = default_DB_Pass + } + // Set DB Port + env_db_port, present := os.LookupEnv("DB_PORT") + if present { + Db_Port = env_db_port + } else { + Db_Port = default_DB_Port + } + // Set DB Host + env_db_host, present := os.LookupEnv("DB_HOST") + if present { + Db_Host = env_db_host + } else { + Db_Host = default_DB_Host + } + // Set DB Default Database + env_db_default_db, present := os.LookupEnv("DB_DEFAULT_DATABASE") + if present { + Db_Default_Db = env_db_default_db + } else { + Db_Default_Db = default_DB_Default_db + } +} diff --git a/src/api/helper/90_vars.go b/src/api/helper/90_vars.go new file mode 100644 index 0000000..da7471f --- /dev/null +++ b/src/api/helper/90_vars.go @@ -0,0 +1,5 @@ +package helper + +import "database/sql" + +var Db *sql.DB diff --git a/src/api/helper/91_default_vars.go b/src/api/helper/91_default_vars.go new file mode 100644 index 0000000..ce292dd --- /dev/null +++ b/src/api/helper/91_default_vars.go @@ -0,0 +1,33 @@ +package helper + +// Default Vars +// --- Default Gin Vars --- +var default_port string = "8081" +var default_ip string = "0.0.0.0" + +// --- Default Log Vars --- +var default_log_file string = "/var/log/gonodeinfo.log" +var default_gin_log_file string = "/var/log/gonodeinfo.gin.log" + +// --- Default DB Vars --- +var default_DB_User string = "root" +var default_DB_Pass string = "rootpw" +var default_DB_Host string = "127.0.0.1" +var default_DB_Port string = "3307" +var default_DB_Default_db string = "sys" + +// Vars +// --- Gin Vars --- +var Http_port string +var Ip string + +// --- Log Vars --- +var Log_file string +var Gin_log_file string + +// --- DB Vars --- +var Db_User string +var Db_Pass string +var Db_Host string +var Db_Port string +var Db_Default_Db string diff --git a/src/api/main.go b/src/api/main.go new file mode 100644 index 0000000..f9dcd67 --- /dev/null +++ b/src/api/main.go @@ -0,0 +1,9 @@ +package main + +import ( + helper "api/helper" +) + +func main() { + helper.Loadenv() +} diff --git a/src/api/test/main.go b/src/api/test/main.go new file mode 100644 index 0000000..11058d6 --- /dev/null +++ b/src/api/test/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + Test() +} diff --git a/src/api/test/test.go b/src/api/test/test.go new file mode 100644 index 0000000..1312465 --- /dev/null +++ b/src/api/test/test.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func Test() { + fmt.Println("test") +} diff --git a/src/templates/.env.j2 b/src/templates/.env.j2 new file mode 100644 index 0000000..e69de29