From 54894ce6f9a4d7d368c51525f73f63e26519c592 Mon Sep 17 00:00:00 2001 From: Andreas Bielawski Date: Tue, 5 Apr 2022 21:32:22 +0200 Subject: [PATCH] Restructure DB connecting a bit --- .env.example | 6 +++++- handler/funcs.go | 5 +++-- main.go | 15 ++++++--------- storage/storage.go | 37 ++++++++++++++++++++++++++++--------- 4 files changed, 42 insertions(+), 21 deletions(-) diff --git a/.env.example b/.env.example index bde2a52..559a4c7 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,6 @@ BOT_TOKEN=123456789:abcdefghijklmnopqrstuvxwyz -MYSQL_URL=user:password@tcp(127.0.0.1:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local +MYSQL_HOST=127.0.0.1 +MYSQL_PORT=3306 +MYSQL_USER=myuser +MYSQL_PASSWORD=mypassword +MYSQL_DB=mydb \ No newline at end of file diff --git a/handler/funcs.go b/handler/funcs.go index d1868e6..b236d44 100644 --- a/handler/funcs.go +++ b/handler/funcs.go @@ -1,9 +1,10 @@ package handler import ( - "gopkg.in/telebot.v3" "log" "os" + + "gopkg.in/telebot.v3" ) var defaultSendOptions = &telebot.SendOptions{ @@ -13,7 +14,7 @@ var defaultSendOptions = &telebot.SendOptions{ } func isDebugMode() bool { - _, exists := os.LookupEnv("TAGESSCHAU_EILBOT_DEBUG") + _, exists := os.LookupEnv("DEBUG") return exists } diff --git a/main.go b/main.go index b2c10df..33a2fc4 100644 --- a/main.go +++ b/main.go @@ -1,28 +1,25 @@ package main import ( - "github.com/Brawl345/tagesschau-eilbot/handler" - "github.com/Brawl345/tagesschau-eilbot/storage" - _ "github.com/joho/godotenv/autoload" "log" "os" "os/signal" "syscall" "time" + "github.com/Brawl345/tagesschau-eilbot/handler" + "github.com/Brawl345/tagesschau-eilbot/storage" + _ "github.com/joho/godotenv/autoload" + "gopkg.in/telebot.v3" ) func main() { - db, err := storage.Open(os.Getenv("TAGESSCHAU_EILBOT_MYSQL_URL")) + db, err := storage.Connect() if err != nil { log.Fatal(err) } - if err := db.Ping(); err != nil { - log.Fatal(err) - } - log.Println("Database connection established") n, err := db.Migrate() @@ -34,7 +31,7 @@ func main() { } pref := telebot.Settings{ - Token: os.Getenv("TAGESSCHAU_EILBOT_TOKEN"), + Token: os.Getenv("BOT_TOKEN"), Poller: &telebot.LongPoller{Timeout: 10 * time.Second}, } diff --git a/storage/storage.go b/storage/storage.go index dbbefa9..88d0223 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -2,10 +2,14 @@ package storage import ( "embed" + "fmt" + "os" + "strings" + "time" + _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" migrate "github.com/rubenv/sql-migrate" - "time" ) //go:embed migrations/* @@ -17,20 +21,35 @@ type DB struct { System SystemStorage } -func Open(url string) (*DB, error) { - db, err := sqlx.Open("mysql", url) +func Connect() (*DB, error) { + host := strings.TrimSpace(os.Getenv("MYSQL_HOST")) + port := strings.TrimSpace(os.Getenv("MYSQL_PORT")) + user := strings.TrimSpace(os.Getenv("MYSQL_USER")) + password := strings.TrimSpace(os.Getenv("MYSQL_PASSWORD")) + db := strings.TrimSpace(os.Getenv("MYSQL_DB")) + + connectionString := fmt.Sprintf( + "%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", + user, + password, + host, + port, + db, + ) + + conn, err := sqlx.Connect("mysql", connectionString) if err != nil { return nil, err } - db.SetMaxIdleConns(100) - db.SetMaxOpenConns(100) - db.SetConnMaxIdleTime(3 * time.Minute) + conn.SetMaxIdleConns(100) + conn.SetMaxOpenConns(100) + conn.SetConnMaxIdleTime(3 * time.Minute) return &DB{ - DB: db, - Subscribers: &Subscribers{db}, - System: &System{db}, + DB: conn, + Subscribers: &Subscribers{DB: conn}, + System: &System{DB: conn}, }, nil }