Files
RenewCMS/main/server/server.go
T
Florian Sylvain 245bf2fbf4 feat: environment specific database handling
Changes have been made to support environment specific database file handling. By introducing a new environment variable "DB_FILE", the application's runtime now reads the database file path from the environment. In addition, subdirectories will now be automatically created if they don't exist and more detailed error messages will be printed in case of a failure. Environment variable setup and project building instructions were also updated in the README file.
2023-08-13 04:34:30 +02:00

48 lines
1021 B
Go

package server
import (
"GohCMS2/api"
"GohCMS2/main/route"
"fmt"
"github.com/go-chi/chi/v5"
"github.com/joho/godotenv"
"net/http"
"os"
)
var possibleEnvFileLocations = []string{".env", "../.env"}
var envVarsToLoad = []string{"PORT", "ENVIRONMENT", "CORS_ALLOWED_ORIGINS", "DB_FILE"}
func initEnvVariables() {
var err error
for _, envLocation := range possibleEnvFileLocations {
err = godotenv.Load(envLocation)
if err == nil {
break
}
}
if err != nil {
fmt.Println("WARNING: Could not load any .env file")
}
for _, envVar := range envVarsToLoad {
if _, ok := os.LookupEnv(envVar); !ok {
panic(fmt.Sprintf("Environment variable %s is not set", envVar))
}
}
}
func InitServer() *chi.Mux {
initEnvVariables()
api.InitContainer()
api.InitValidator()
route.InitJwt()
return route.InitRoutes()
}
func StartServer(router *chi.Mux) error {
fmt.Println("Server starting on http://localhost:" + os.Getenv("PORT"))
err := http.ListenAndServe(":"+os.Getenv("PORT"), router)
return err
}