diff options
| author | Bobby <[email protected]> | 2026-03-29 22:52:46 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-03-29 22:52:46 +0530 |
| commit | 9eb9b7f4bd552a641235764f66483e1f940fcfd9 (patch) | |
| tree | da520b923b5e6758d5457b6233dd6671fc640914 /nexus/config | |
| parent | 65a143a0871c35989b7c7ea6723d39a0585c089e (diff) | |
| download | echoes-of-vaelun-main.tar.xz echoes-of-vaelun-main.zip | |
Diffstat (limited to 'nexus/config')
| -rw-r--r-- | nexus/config/config.go | 38 | ||||
| -rw-r--r-- | nexus/config/defaults.go | 3 | ||||
| -rw-r--r-- | nexus/config/env.go | 37 | ||||
| -rw-r--r-- | nexus/config/messages.go | 10 |
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"
+)
|
