From ef69ecd47dd755adc5b98a9257fd551ad29829fb Mon Sep 17 00:00:00 2001 From: Kylesoda <249518290+kylesoda@users.noreply.github.com> Date: Tue, 31 Mar 2026 10:14:14 -0500 Subject: [PATCH] feat: add config module --- go.mod | 5 +++- go.sum | 2 ++ internal/app/config/main.go | 49 +++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 internal/app/config/main.go diff --git a/go.mod b/go.mod index 4fff322..df4f756 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,9 @@ module git.ksdemosapps.com/kylesoda/go-migrate go 1.25.7 -require github.com/sirupsen/logrus v1.9.4 +require ( + github.com/joho/godotenv v1.5.1 + github.com/sirupsen/logrus v1.9.4 +) require golang.org/x/sys v0.13.0 // indirect diff --git a/go.sum b/go.sum index 9e91db8..62bf080 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= diff --git a/internal/app/config/main.go b/internal/app/config/main.go new file mode 100644 index 0000000..ca849e8 --- /dev/null +++ b/internal/app/config/main.go @@ -0,0 +1,49 @@ +package config + +import ( + "os" + + "github.com/joho/godotenv" + log "github.com/sirupsen/logrus" +) + +type dbConfig struct { + Url string +} + +type appConfig struct { + FromDb dbConfig + ToDb dbConfig +} + +func loadEnv() { + err := godotenv.Load() + if err != nil { + log.Warn("Warning: could not load .env file") + } +} + +func getAppConfig() appConfig { + loadEnv() + + fromDbUrl := os.Getenv("PG_FROM_DB_URL") + if fromDbUrl == "" { + log.Fatal("PG_FROM_DB_URL environment variable not set") + } + + toDbUrl := os.Getenv("PG_TO_DB_URL") + if toDbUrl == "" { + log.Fatal("PG_TO_DB_URL environment variable not set") + } + + return appConfig{ + FromDb: dbConfig{ + Url: fromDbUrl, + }, + ToDb: dbConfig{ + Url: toDbUrl, + }, + } +} + +var App appConfig = getAppConfig()