Skip to content

Commit 54894ce

Browse files
committed
Restructure DB connecting a bit
1 parent 8797519 commit 54894ce

File tree

4 files changed

+42
-21
lines changed

4 files changed

+42
-21
lines changed

.env.example

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
BOT_TOKEN=123456789:abcdefghijklmnopqrstuvxwyz
2-
MYSQL_URL=user:password@tcp(127.0.0.1:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local
2+
MYSQL_HOST=127.0.0.1
3+
MYSQL_PORT=3306
4+
MYSQL_USER=myuser
5+
MYSQL_PASSWORD=mypassword
6+
MYSQL_DB=mydb

handler/funcs.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package handler
22

33
import (
4-
"gopkg.in/telebot.v3"
54
"log"
65
"os"
6+
7+
"gopkg.in/telebot.v3"
78
)
89

910
var defaultSendOptions = &telebot.SendOptions{
@@ -13,7 +14,7 @@ var defaultSendOptions = &telebot.SendOptions{
1314
}
1415

1516
func isDebugMode() bool {
16-
_, exists := os.LookupEnv("TAGESSCHAU_EILBOT_DEBUG")
17+
_, exists := os.LookupEnv("DEBUG")
1718
return exists
1819
}
1920

main.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,25 @@
11
package main
22

33
import (
4-
"github.com/Brawl345/tagesschau-eilbot/handler"
5-
"github.com/Brawl345/tagesschau-eilbot/storage"
6-
_ "github.com/joho/godotenv/autoload"
74
"log"
85
"os"
96
"os/signal"
107
"syscall"
118
"time"
129

10+
"github.com/Brawl345/tagesschau-eilbot/handler"
11+
"github.com/Brawl345/tagesschau-eilbot/storage"
12+
_ "github.com/joho/godotenv/autoload"
13+
1314
"gopkg.in/telebot.v3"
1415
)
1516

1617
func main() {
17-
db, err := storage.Open(os.Getenv("TAGESSCHAU_EILBOT_MYSQL_URL"))
18+
db, err := storage.Connect()
1819
if err != nil {
1920
log.Fatal(err)
2021
}
2122

22-
if err := db.Ping(); err != nil {
23-
log.Fatal(err)
24-
}
25-
2623
log.Println("Database connection established")
2724

2825
n, err := db.Migrate()
@@ -34,7 +31,7 @@ func main() {
3431
}
3532

3633
pref := telebot.Settings{
37-
Token: os.Getenv("TAGESSCHAU_EILBOT_TOKEN"),
34+
Token: os.Getenv("BOT_TOKEN"),
3835
Poller: &telebot.LongPoller{Timeout: 10 * time.Second},
3936
}
4037

storage/storage.go

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ package storage
22

33
import (
44
"embed"
5+
"fmt"
6+
"os"
7+
"strings"
8+
"time"
9+
510
_ "github.com/go-sql-driver/mysql"
611
"github.com/jmoiron/sqlx"
712
migrate "github.com/rubenv/sql-migrate"
8-
"time"
913
)
1014

1115
//go:embed migrations/*
@@ -17,20 +21,35 @@ type DB struct {
1721
System SystemStorage
1822
}
1923

20-
func Open(url string) (*DB, error) {
21-
db, err := sqlx.Open("mysql", url)
24+
func Connect() (*DB, error) {
25+
host := strings.TrimSpace(os.Getenv("MYSQL_HOST"))
26+
port := strings.TrimSpace(os.Getenv("MYSQL_PORT"))
27+
user := strings.TrimSpace(os.Getenv("MYSQL_USER"))
28+
password := strings.TrimSpace(os.Getenv("MYSQL_PASSWORD"))
29+
db := strings.TrimSpace(os.Getenv("MYSQL_DB"))
30+
31+
connectionString := fmt.Sprintf(
32+
"%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
33+
user,
34+
password,
35+
host,
36+
port,
37+
db,
38+
)
39+
40+
conn, err := sqlx.Connect("mysql", connectionString)
2241
if err != nil {
2342
return nil, err
2443
}
2544

26-
db.SetMaxIdleConns(100)
27-
db.SetMaxOpenConns(100)
28-
db.SetConnMaxIdleTime(3 * time.Minute)
45+
conn.SetMaxIdleConns(100)
46+
conn.SetMaxOpenConns(100)
47+
conn.SetConnMaxIdleTime(3 * time.Minute)
2948

3049
return &DB{
31-
DB: db,
32-
Subscribers: &Subscribers{db},
33-
System: &System{db},
50+
DB: conn,
51+
Subscribers: &Subscribers{DB: conn},
52+
System: &System{DB: conn},
3453
}, nil
3554
}
3655

0 commit comments

Comments
 (0)