Skip to content

Commit 19189f1

Browse files
refactor: Stores are configured outside of server
1 parent 117cfbc commit 19189f1

File tree

3 files changed

+28
-19
lines changed

3 files changed

+28
-19
lines changed

main.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ func main() {
3838
if err != nil {
3939
log.Fatal(err)
4040
}
41+
err = db.AutoMigrate(&gormHis{}, &gormRec{})
42+
if err != nil {
43+
log.Fatal(err)
44+
}
4145

4246
// OTEL
4347
metricExporter, err := prometheus.New()
@@ -57,14 +61,20 @@ func main() {
5761
otel.SetMeterProvider(meterProvider) // Sets global
5862
go serveMetrics()
5963

64+
// Stores
65+
historyStore := newGormHistoryStore(db)
66+
recStore := newGormRecStore(db)
67+
currentStore := newInMemoryCurrentStore()
68+
6069
serverConfig := ServerConfig{
6170
username: os.Getenv("USERNAME"),
6271
password: os.Getenv("PASSWORD"),
6372
jwtSecret: os.Getenv("JWT_SECRET"),
6473
tokenDurationSeconds: 60 * 60, // 1 hour
6574

66-
db: db,
67-
dbAutoMigrate: true,
75+
historyStore: historyStore,
76+
recStore: recStore,
77+
currentStore: currentStore,
6878
}
6979
server, err := NewServer(serverConfig)
7080
if err != nil {

server.go

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"net/http"
55

66
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
7-
"gorm.io/gorm"
87
)
98

109
type ServerConfig struct {
@@ -14,20 +13,13 @@ type ServerConfig struct {
1413
jwtSecret string
1514
tokenDurationSeconds int
1615

17-
// Database
18-
db *gorm.DB
19-
dbAutoMigrate bool
16+
// Stores
17+
historyStore historyStore
18+
recStore recStore
19+
currentStore currentStore
2020
}
2121

2222
func NewServer(serverConfig ServerConfig) (http.Handler, error) {
23-
24-
if serverConfig.dbAutoMigrate {
25-
err := serverConfig.db.AutoMigrate(&gormHis{}, &gormRec{})
26-
if err != nil {
27-
return nil, err
28-
}
29-
}
30-
3123
// Register paths
3224
server := http.NewServeMux()
3325
tokenAuth := http.NewServeMux()
@@ -38,9 +30,9 @@ func NewServer(serverConfig ServerConfig) (http.Handler, error) {
3830
username: serverConfig.username,
3931
password: serverConfig.password,
4032
}
41-
hisController := hisController{store: newGormHistoryStore(serverConfig.db)}
42-
recController := recController{store: newGormRecStore(serverConfig.db)}
43-
currentController := currentController{store: newInMemoryCurrentStore()}
33+
hisController := hisController{store: serverConfig.historyStore}
34+
recController := recController{store: serverConfig.recStore}
35+
currentController := currentController{store: serverConfig.currentStore}
4436

4537
// handleFunc is a replacement for mux.HandleFunc that adds route data to the metrics.
4638
handleFunc := func(mux *http.ServeMux, pattern string, handlerFunc func(http.ResponseWriter, *http.Request)) {

server_test.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,22 @@ func TestServerTestSuite(t *testing.T) {
3030
func (suite *ServerTestSuite) SetupTest() {
3131
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
3232
assert.Nil(suite.T(), err)
33+
err = db.AutoMigrate(&gormHis{}, &gormRec{})
34+
assert.Nil(suite.T(), err)
35+
36+
historyStore := newGormHistoryStore(db)
37+
recStore := newGormRecStore(db)
38+
currentStore := newInMemoryCurrentStore()
3339

3440
server, err := NewServer(ServerConfig{
3541
username: "test",
3642
password: "password",
3743
jwtSecret: "aaa",
3844
tokenDurationSeconds: 60,
3945

40-
db: db,
41-
dbAutoMigrate: true,
46+
historyStore: historyStore,
47+
recStore: recStore,
48+
currentStore: currentStore,
4249
})
4350
assert.Nil(suite.T(), err)
4451

0 commit comments

Comments
 (0)