From 5c0d6180ed2b61868042191f0eb3500bccb691ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Hells=C3=A9n?= Date: Sat, 17 Feb 2024 20:07:21 +0100 Subject: [PATCH] Read settings from .env --- .env.example | 10 ++-------- .vscode/settings.json | 2 ++ go.mod | 1 + go.sum | 2 ++ main.go | 27 +++++++++++++++++++++------ 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/.env.example b/.env.example index 538a593..11ee1d7 100644 --- a/.env.example +++ b/.env.example @@ -1,11 +1,5 @@ PORT=8000 -DATABASE_URL=sqlite:///db.sqlite3 -ADMIN_EMAIL= -EMAIL_HOST_USER= -EMAIL_HOST_PASSWORD= -EMAIL_HOST=gmail.com -EMAIL_PORT=587 +HOST=127.0.0.1 +DATABASE_URL=postgresql://localhost/feedvault?user=feedvault&password=feedvault DISCORD_WEBHOOK_URL= -APP_ENV=development -USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0 diff --git a/.vscode/settings.json b/.vscode/settings.json index 159516e..081298b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -27,6 +27,7 @@ "feedvault", "gaierror", "giga", + "godotenv", "gofeed", "gomod", "gorm", @@ -36,6 +37,7 @@ "huaweimobilewifi", "isready", "jackc", + "joho", "ldflags", "leftright", "levelname", diff --git a/go.mod b/go.mod index 2f93a64..89b8d91 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.22.0 require ( github.com/jackc/pgx/v5 v5.5.3 + github.com/joho/godotenv v1.5.1 github.com/mmcdole/gofeed v1.2.1 ) diff --git a/go.sum b/go.sum index 00cf07d..bcacdf8 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,8 @@ github.com/jackc/pgx/v5 v5.5.3 h1:Ces6/M3wbDXYpM8JyyPD57ivTtJACFZJd885pdIaV2s= github.com/jackc/pgx/v5 v5.5.3/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/mmcdole/gofeed v1.2.1 h1:tPbFN+mfOLcM1kDF1x2c/N68ChbdBatkppdzf/vDe1s= diff --git a/main.go b/main.go index 2c3daa2..1c49d24 100644 --- a/main.go +++ b/main.go @@ -3,11 +3,13 @@ package main import ( "context" "log" + "os" "net/http" "github.com/TheLovinator1/FeedVault/db" "github.com/jackc/pgx/v5/pgxpool" + _ "github.com/joho/godotenv/autoload" ) var ( @@ -15,17 +17,22 @@ var ( DB *db.Queries ) -func init() { log.SetFlags(log.LstdFlags | log.Lshortfile) } - +// Connect to our PostgreSQL database and store the connection pool in the DB variable that we can use throughout our application. func init() { ctx := context.Background() // Open a database connection - dbpool, err := pgxpool.New(ctx, "postgresql://localhost/feedvault?user=feedvault&password=feedvault") + databaseURL := os.Getenv("DATABASE_URL") + if databaseURL == "" { + databaseURL = "postgresql://localhost/feedvault?user=feedvault&password=feedvault" + } + log.Printf("Connecting to database: %s", databaseURL) + dbpool, err := pgxpool.New(ctx, databaseURL) if err != nil { - log.Fatalf("pgx.Connect(): %v", err) + log.Fatalf("pgxpool.New(): %v", err) } + // Create a new DB object DB = db.New(dbpool) // Test the connection @@ -51,12 +58,20 @@ func main() { mux.HandleFunc("/upload_opml", UploadOpmlHandler) // Create server + port := os.Getenv("PORT") + if port == "" { + port = "8000" + } + host := os.Getenv("HOST") + if host == "" { + host = "127.0.0.1" + } server := &http.Server{ - Addr: "127.0.0.1:8000", + Addr: host + ":" + port, Handler: mux, } - log.Print("Server started on http://localhost:8000/ to stop") + log.Print("Server started on http://" + host + ":" + port + " to stop") if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("ListenAndServe(): %v", err) }