@@ -2,10 +2,14 @@ package storage
22
33import (
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