From dbc8f64baa9b006e010ee60790a56bd4ca544851 Mon Sep 17 00:00:00 2001
From: Ophestra Umiker <cat@ophivana.moe>
Date: Fri, 11 Oct 2024 19:53:35 +0900
Subject: [PATCH] feat(conf): config defaults and cleaner lookup

Introduces configuration defaults, and lookup is grouped into a single init function.

Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
---
 conf.go | 31 +++++++++++++++++++++++++++++++
 main.go | 21 +++++++--------------
 2 files changed, 38 insertions(+), 14 deletions(-)
 create mode 100644 conf.go

diff --git a/conf.go b/conf.go
new file mode 100644
index 0000000..c3833f8
--- /dev/null
+++ b/conf.go
@@ -0,0 +1,31 @@
+package main
+
+import "os"
+
+const (
+	dbPath uint8 = iota
+	listenAddr
+	allowedOrigins
+
+	confLen
+)
+
+// env variable, default pairing
+var confEnv = [confLen][2]string{
+	{"DB", "db"},
+	{"LISTEN_ADDR", "127.0.0.1:3000"},
+	{"ALLOWED_ORIGINS", "https://hizla.io"},
+}
+
+// resolved config values
+var conf [confLen]string
+
+func init() {
+	for i := 0; i < int(confLen); i++ {
+		if v, ok := os.LookupEnv(confEnv[i][0]); !ok {
+			conf[i] = confEnv[i][1]
+		} else {
+			conf[i] = v
+		}
+	}
+}
diff --git a/main.go b/main.go
index e65f449..e2faff5 100644
--- a/main.go
+++ b/main.go
@@ -1,27 +1,26 @@
 package main
 
 import (
-	"github.com/gofiber/fiber/v2"
-	"github.com/gofiber/fiber/v2/middleware/cors"
-	"github.com/gofiber/fiber/v2/middleware/limiter"
 	"log"
-	"os"
 	"regexp"
 	"time"
+
+	"github.com/gofiber/fiber/v2"
+	"github.com/gofiber/fiber/v2/middleware/cors"
+	"github.com/gofiber/fiber/v2/middleware/limiter"
 )
 
 var emailRegex = regexp.MustCompile(`^[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,4}$`)
 
 func main() {
-
 	app := fiber.New()
 
 	app.Use(cors.New(cors.Config{
-		AllowOrigins: os.Getenv("ALLOWED_ORIGINS"),
+		AllowOrigins: conf[allowedOrigins],
 		AllowHeaders: "Origin, Content-Type, Accept",
 	}))
 
-	if err := InitDB("waitlistdb"); err != nil {
+	if err := InitDB(conf[dbPath]); err != nil {
 		log.Fatalf("Failed to initialize LevelDB: %v", err)
 	}
 
@@ -89,16 +88,10 @@ func main() {
 		})
 	})
 
-
 	// Graceful shutdown
 	app.Use(func(c *fiber.Ctx) error {
 		return c.Next()
 	})
 
-	port := os.Getenv("PORT")
-	if port == "" {
-		port = "3000"
-	}
-
-	log.Fatal(app.Listen(":" + port))
+	log.Fatal(app.Listen(conf[listenAddr]))
 }
-- 
GitLab