summaryrefslogtreecommitdiff
path: root/nexus/config
diff options
context:
space:
mode:
Diffstat (limited to 'nexus/config')
-rw-r--r--nexus/config/config.go38
-rw-r--r--nexus/config/defaults.go3
-rw-r--r--nexus/config/env.go37
-rw-r--r--nexus/config/messages.go10
4 files changed, 88 insertions, 0 deletions
diff --git a/nexus/config/config.go b/nexus/config/config.go
new file mode 100644
index 0000000..bbc42f6
--- /dev/null
+++ b/nexus/config/config.go
@@ -0,0 +1,38 @@
+package config
+
+import (
+ "nexus/utils/env"
+ "nexus/utils/logger"
+)
+
+var (
+ Server server
+ Database database
+ Session session
+ Token token
+ Game game
+)
+
+func init() {
+ if err := env.Parse(&Server); err != nil {
+ logger.Fatalf(LogPrefix, ServerConfigFailed, err)
+ }
+ if err := env.Parse(&Database); err != nil {
+ logger.Fatalf(LogPrefix, DatabaseConfigFailed, err)
+ }
+ if err := env.Parse(&Session); err != nil {
+ logger.Fatalf(LogPrefix, SessionConfigFailed, err)
+ }
+ if err := env.Parse(&Token); err != nil {
+ logger.Fatalf(LogPrefix, TokenConfigFailed, err)
+ }
+ if err := env.Parse(&Game); err != nil {
+ logger.Fatalf(LogPrefix, GameConfigFailed, err)
+ }
+
+ if Server.Debug {
+ logger.SetDebug(true)
+ }
+
+ logger.Successf(LogPrefix, ConfigLoaded)
+}
diff --git a/nexus/config/defaults.go b/nexus/config/defaults.go
new file mode 100644
index 0000000..b3bb012
--- /dev/null
+++ b/nexus/config/defaults.go
@@ -0,0 +1,3 @@
+package config
+
+const LogPrefix = "Config"
diff --git a/nexus/config/env.go b/nexus/config/env.go
new file mode 100644
index 0000000..3b3b65b
--- /dev/null
+++ b/nexus/config/env.go
@@ -0,0 +1,37 @@
+package config
+
+import "time"
+
+type server struct {
+ Host string `env:"HOST" default:"0.0.0.0"`
+ Port int `env:"PORT" default:"8080"`
+ Debug bool `env:"DEBUG" default:"false"`
+}
+
+type database struct {
+ Host string `env:"DB_HOST" default:"localhost"`
+ Port int `env:"DB_PORT" default:"5432"`
+ User string `env:"DB_USER" default:"postgres"`
+ Password string `env:"DB_PASSWORD" default:"postgres"`
+ Name string `env:"DB_NAME" default:"nexus"`
+ SSLMode string `env:"DB_SSL_MODE" default:"disable"`
+}
+
+type session struct {
+ CookieName string `env:"SESSION_COOKIE_NAME" default:"eov_session"`
+ CookieDomain string `env:"SESSION_COOKIE_DOMAIN" default:"localhost"`
+ CookiePath string `env:"SESSION_COOKIE_PATH" default:"/"`
+ CookieSecure bool `env:"SESSION_COOKIE_SECURE" default:"false"`
+ Timeout time.Duration `env:"SESSION_TIMEOUT" default:"24h"`
+}
+
+type token struct {
+ AuthExpiry int `env:"AUTH_TOKEN_EXPIRY_MINUTES" default:"30"`
+ RefreshExpiry int `env:"REFRESH_TOKEN_EXPIRY_DAYS" default:"30"`
+}
+
+type game struct {
+ NakamaHost string `env:"NAKAMA_HOST" default:"localhost"`
+ NakamaPort int `env:"NAKAMA_PORT" default:"7350"`
+ ServerKey string `env:"NAKAMA_SERVER_KEY" default:"defaultkey"`
+}
diff --git a/nexus/config/messages.go b/nexus/config/messages.go
new file mode 100644
index 0000000..55f6a6a
--- /dev/null
+++ b/nexus/config/messages.go
@@ -0,0 +1,10 @@
+package config
+
+const (
+ ServerConfigFailed = "Failed to parse server config: %v"
+ DatabaseConfigFailed = "Failed to parse database config: %v"
+ SessionConfigFailed = "Failed to parse session config: %v"
+ TokenConfigFailed = "Failed to parse token config: %v"
+ GameConfigFailed = "Failed to parse game config: %v"
+ ConfigLoaded = "Configuration loaded successfully"
+)