|
1 | 1 | package cmd |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "context" |
5 | 4 | "database/sql" |
6 | 5 | "log" |
7 | 6 | "net/http" |
8 | 7 | "strconv" |
9 | | - "time" |
10 | 8 |
|
11 | | - "github.com/etherlabsio/healthcheck/v2" |
12 | 9 | _ "github.com/go-sql-driver/mysql" |
13 | | - "github.com/gorilla/handlers" |
| 10 | + gorillaHandlers "github.com/gorilla/handlers" |
14 | 11 | "github.com/gorilla/mux" |
15 | 12 | _ "github.com/jackc/pgx/v4/stdlib" |
16 | 13 | "go.uber.org/zap" |
17 | 14 |
|
| 15 | + gabi "github.com/app-sre/gabi/pkg" |
18 | 16 | "github.com/app-sre/gabi/pkg/env/db" |
19 | | - "github.com/app-sre/gabi/pkg/query" |
| 17 | + "github.com/app-sre/gabi/pkg/handlers" |
20 | 18 | ) |
21 | 19 |
|
22 | | -func Run() { |
| 20 | +func Run(logger *zap.SugaredLogger) { |
23 | 21 | dbe := db.Dbenv{} |
24 | 22 | err := dbe.Populate() |
25 | 23 | if err != nil { |
26 | | - log.Fatal(err) |
| 24 | + logger.Fatal(err) |
27 | 25 | } |
28 | | - zap.S().Info("Database environment variables populated.") |
29 | 26 |
|
30 | | - DB, err := sql.Open(dbe.DB_DRIVER, dbe.ConnStr) |
| 27 | + logger.Info("Database environment variables populated.") |
| 28 | + |
| 29 | + db, err := sql.Open(dbe.DB_DRIVER, dbe.ConnStr) |
31 | 30 | if err != nil { |
32 | | - log.Fatal("Fatal error opening database.") |
| 31 | + logger.Fatal("Fatal error opening database.") |
33 | 32 | } |
34 | | - defer DB.Close() |
35 | | - zap.S().Info("Database connection handle established.") |
36 | | - zap.S().Infof("Using %s database driver.", dbe.DB_DRIVER) |
| 33 | + defer db.Close() |
| 34 | + |
| 35 | + env := &gabi.Env{DB: db, Logger: logger} |
| 36 | + logger.Info("Database connection handle established.") |
| 37 | + logger.Infof("Using %s database driver.", dbe.DB_DRIVER) |
37 | 38 |
|
38 | 39 | r := mux.NewRouter() |
39 | 40 |
|
40 | | - r.Handle("/healthcheck", healthcheck.Handler( |
41 | | - healthcheck.WithTimeout(5*time.Second), |
42 | | - healthcheck.WithChecker( |
43 | | - "database", healthcheck.CheckerFunc( |
44 | | - func(ctx context.Context) error { |
45 | | - return DB.PingContext(ctx) |
46 | | - }, |
47 | | - ), |
48 | | - ), |
49 | | - )) |
| 41 | + r.Handle("/healthcheck", handlers.Healthcheck(env)) |
| 42 | + r.HandleFunc("/query", handlers.Query(env)) |
50 | 43 |
|
51 | | - r.HandleFunc("/query", query.Handler) |
52 | | - zap.S().Info("Router initialized.") |
| 44 | + logger.Info("Router initialized.") |
53 | 45 |
|
54 | 46 | servePort := 8080 |
55 | | - zap.S().Infof("HTTP server starting on port %d.", servePort) |
| 47 | + logger.Infof("HTTP server starting on port %d.", servePort) |
56 | 48 |
|
57 | 49 | // Temp workaround for easy to access io.Writer |
58 | 50 | httpLogger := log.Default() |
59 | 51 | http.ListenAndServe( |
60 | 52 | ":"+strconv.Itoa(servePort), |
61 | | - handlers.LoggingHandler(httpLogger.Writer(), r), |
| 53 | + gorillaHandlers.LoggingHandler(httpLogger.Writer(), r), |
62 | 54 | ) |
63 | 55 | } |
0 commit comments