File tree 4 files changed +74
-4
lines changed
4 files changed +74
-4
lines changed Original file line number Diff line number Diff line change 1
1
package main
2
2
3
+ import "database/sql"
3
4
import "fmt"
4
5
import "net/http"
5
6
import "os"
6
7
import "github.com/go-chi/chi"
7
8
9
+ import _ "github.com/go-sql-driver/mysql"
10
+
8
11
func main () {
12
+ mapper := func (name string ) string {
13
+ value := os .Getenv (name )
14
+ switch name {
15
+ case "DB_HOST" :
16
+ if value == "" {
17
+ value = "localhost"
18
+ }
19
+ case "DB_NAME" , "DB_USER" , "DB_PASSWORD" :
20
+ if value == "" {
21
+ fmt .Fprintf (os .Stderr , "%s env variable is not set or empty\n " , name )
22
+ os .Exit (1 )
23
+ }
24
+ }
25
+ return value
26
+ }
27
+
28
+ dsn := os .Expand ("${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:3306)/${DB_NAME}" , mapper )
29
+ db , err := sql .Open ("mysql" , dsn )
30
+ if err != nil {
31
+ fmt .Fprintf (os .Stderr , "sql.Open failed: %v\n " , err )
32
+ os .Exit (1 )
33
+ }
34
+ defer db .Close ()
35
+
36
+ if err = db .Ping (); err != nil {
37
+ fmt .Fprintf (os .Stderr , "Could not connect to database: %v\n " , err )
38
+ os .Exit (1 )
39
+ }
40
+
9
41
r := chi .NewRouter ()
10
42
registerRoutes (r )
11
43
@@ -15,7 +47,7 @@ func main() {
15
47
}
16
48
17
49
fmt .Println ("Listen on " + port )
18
- err : = http .ListenAndServe (":" + port , r )
50
+ err = http .ListenAndServe (":" + port , r )
19
51
fmt .Fprintf (os .Stderr , "ListenAndServe failed: %v\n " , err )
20
52
os .Exit (1 )
21
53
}
Original file line number Diff line number Diff line change @@ -2,4 +2,7 @@ module main
2
2
3
3
go 1.14
4
4
5
- require github.com/go-chi/chi v4.1.2+incompatible
5
+ require (
6
+ github.com/go-chi/chi v4.1.2+incompatible
7
+ github.com/go-sql-driver/mysql v1.5.0
8
+ )
Original file line number Diff line number Diff line change 1
1
package main
2
2
3
+ import "database/sql"
3
4
import "fmt"
4
5
import "net/http"
5
6
import "os"
6
7
import "github.com/go-chi/chi"
7
8
9
+ import _ "github.com/go-sql-driver/mysql"
10
+
8
11
func main () {
12
+ mapper := func (name string ) string {
13
+ value := os .Getenv (name )
14
+ switch name {
15
+ case "DB_HOST" :
16
+ if value == "" {
17
+ value = "localhost"
18
+ }
19
+ case "DB_NAME" , "DB_USER" , "DB_PASSWORD" :
20
+ if value == "" {
21
+ fmt .Fprintf (os .Stderr , "%s env variable is not set or empty\n " , name )
22
+ os .Exit (1 )
23
+ }
24
+ }
25
+ return value
26
+ }
27
+
28
+ dsn := os .Expand ("${DB_USER}:${DB_PASSWORD}@tcp(${DB_HOST}:3306)/${DB_NAME}" , mapper )
29
+ db , err := sql .Open ("mysql" , dsn )
30
+ if err != nil {
31
+ fmt .Fprintf (os .Stderr , "sql.Open failed: %v\n " , err )
32
+ os .Exit (1 )
33
+ }
34
+ defer db .Close ()
35
+
36
+ if err = db .Ping (); err != nil {
37
+ fmt .Fprintf (os .Stderr , "Could not connect to database: %v\n " , err )
38
+ os .Exit (1 )
39
+ }
40
+
9
41
r := chi .NewRouter ()
10
42
registerRoutes (r )
11
43
@@ -15,7 +47,7 @@ func main() {
15
47
}
16
48
17
49
fmt .Println ("Listen on " + port )
18
- err : = http .ListenAndServe (":" + port , r )
50
+ err = http .ListenAndServe (":" + port , r )
19
51
fmt .Fprintf (os .Stderr , "ListenAndServe failed: %v\n " , err )
20
52
os .Exit (1 )
21
53
}
Original file line number Diff line number Diff line change @@ -2,4 +2,7 @@ module main
2
2
3
3
go 1.14
4
4
5
- require github.com/go-chi/chi v4.1.2+incompatible
5
+ require (
6
+ github.com/go-chi/chi v4.1.2+incompatible
7
+ github.com/go-sql-driver/mysql v1.5.0
8
+ )
You can’t perform that action at this time.
0 commit comments