Skip to content

Commit 8b2416c

Browse files
committed
Update config for simplified storage
1 parent 4ad5bba commit 8b2416c

19 files changed

+61
-231
lines changed

garden-app/config.yaml.example

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,4 @@ influxdb:
1010
org: "garden"
1111
bucket: "garden"
1212
storage:
13-
driver: "sqlite"
14-
options:
15-
data_source_name: "garden.db"
13+
connection_string: "garden.db"

garden-app/pkg/storage/client.go

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@ import (
99
"github.com/calvinmclean/automated-garden/garden-app/pkg/weather"
1010

1111
"github.com/calvinmclean/babyapi"
12-
"github.com/mitchellh/mapstructure"
1312
)
1413

15-
// Config is used to identify and configure a storage client
14+
// Config is used to configure the SQLite storage client
1615
type Config struct {
17-
Driver string `mapstructure:"driver" yaml:"driver"`
18-
Options map[string]any `mapstructure:"options" yaml:"options"`
16+
ConnectionString string `mapstructure:"connection_string" yaml:"connection_string"`
1917
}
2018

2119
// AdditionalQueries are queries that are implemented outside of the base babyapi implementations
@@ -36,17 +34,9 @@ type Client struct {
3634
}
3735

3836
func NewClient(config Config) (*Client, error) {
39-
if config.Driver != "sqlite" {
40-
return nil, fmt.Errorf("invalid driver: %q (only sqlite is supported)", config.Driver)
41-
}
42-
43-
var sqlConfig sql.Config
44-
err := mapstructure.Decode(config.Options, &sqlConfig)
45-
if err != nil {
46-
return nil, fmt.Errorf("error decoding SQL config: %w", err)
47-
}
48-
49-
sqlClient, err := sql.NewClient(sqlConfig)
37+
sqlClient, err := sql.NewClient(sql.Config{
38+
DataSourceName: config.ConnectionString,
39+
})
5040
if err != nil {
5141
return nil, fmt.Errorf("error creating SQL client: %w", err)
5242
}

garden-app/server/api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func (api *API) Setup(cfg Config, validateData bool) error {
115115
}
116116

117117
// Initialize Storage Client
118-
logger.Info("initializing storage client", "driver", cfg.StorageConfig.Driver)
118+
logger.Info("initializing storage client", "driver", "sqlite")
119119
storageClient, err := storage.NewClient(cfg.StorageConfig)
120120
if err != nil {
121121
return fmt.Errorf("unable to initialize storage client: %v", err)

garden-app/server/api_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,7 @@ func TestValidateAllStoredResources(t *testing.T) {
9494
for _, tt := range tests {
9595
t.Run(tt.name, func(t *testing.T) {
9696
storageClient, err := storage.NewClient(storage.Config{
97-
Driver: "sqlite",
98-
Options: map[string]any{
99-
"data_source_name": ":memory:",
100-
},
97+
ConnectionString: ":memory:",
10198
})
10299
assert.NoError(t, err)
103100

garden-app/server/garden_test.go

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,7 @@ func TestCreateGarden(t *testing.T) {
171171
for _, tt := range tests {
172172
t.Run(tt.name, func(t *testing.T) {
173173
storageClient, err := storage.NewClient(storage.Config{
174-
Driver: "sqlite",
175-
Options: map[string]any{
176-
"data_source_name": ":memory:",
177-
},
174+
ConnectionString: ":memory:",
178175
})
179176
assert.NoError(t, err)
180177

@@ -208,10 +205,7 @@ func TestCreateGarden_AutoCreateZones(t *testing.T) {
208205
t.Cleanup(clock.Reset)
209206

210207
storageClient, err := storage.NewClient(storage.Config{
211-
Driver: "sqlite",
212-
Options: map[string]any{
213-
"data_source_name": ":memory:",
214-
},
208+
ConnectionString: ":memory:",
215209
})
216210
assert.NoError(t, err)
217211

@@ -332,10 +326,7 @@ func TestUpdateGardenPUT(t *testing.T) {
332326
for _, tt := range tests {
333327
t.Run(tt.name, func(t *testing.T) {
334328
storageClient, err := storage.NewClient(storage.Config{
335-
Driver: "sqlite",
336-
Options: map[string]any{
337-
"data_source_name": ":memory:",
338-
},
329+
ConnectionString: ":memory:",
339330
})
340331
assert.NoError(t, err)
341332

@@ -392,10 +383,7 @@ func TestGetAllGardens(t *testing.T) {
392383
for _, tt := range tests {
393384
t.Run(tt.name, func(t *testing.T) {
394385
storageClient, err := storage.NewClient(storage.Config{
395-
Driver: "sqlite",
396-
Options: map[string]any{
397-
"data_source_name": ":memory:",
398-
},
386+
ConnectionString: ":memory:",
399387
})
400388
assert.NoError(t, err)
401389

@@ -462,10 +450,7 @@ func TestEndDateGarden(t *testing.T) {
462450
for _, tt := range tests {
463451
t.Run(tt.name, func(t *testing.T) {
464452
storageClient, err := storage.NewClient(storage.Config{
465-
Driver: "sqlite",
466-
Options: map[string]any{
467-
"data_source_name": ":memory:",
468-
},
453+
ConnectionString: ":memory:",
469454
})
470455
assert.NoError(t, err)
471456

@@ -642,10 +627,7 @@ func TestGardenAction(t *testing.T) {
642627
tt.setupMock(mqttClient)
643628

644629
storageClient, err := storage.NewClient(storage.Config{
645-
Driver: "sqlite",
646-
Options: map[string]any{
647-
"data_source_name": ":memory:",
648-
},
630+
ConnectionString: ":memory:",
649631
})
650632
assert.NoError(t, err)
651633

@@ -743,10 +725,7 @@ func TestGardenActionForm(t *testing.T) {
743725
tt.setupMock(mqttClient)
744726

745727
storageClient, err := storage.NewClient(storage.Config{
746-
Driver: "sqlite",
747-
Options: map[string]any{
748-
"data_source_name": ":memory:",
749-
},
728+
ConnectionString: ":memory:",
750729
})
751730
assert.NoError(t, err)
752731

@@ -1164,10 +1143,7 @@ func TestGardenResponseGetActiveWatering(t *testing.T) {
11641143
for _, tt := range tests {
11651144
t.Run(tt.name, func(t *testing.T) {
11661145
storageClient, err := storage.NewClient(storage.Config{
1167-
Driver: "sqlite",
1168-
Options: map[string]any{
1169-
"data_source_name": ":memory:",
1170-
},
1146+
ConnectionString: ":memory:",
11711147
})
11721148
assert.NoError(t, err)
11731149

@@ -1225,10 +1201,7 @@ func TestGardenResponseGetActiveWatering(t *testing.T) {
12251201

12261202
func TestGardenResponseNoZones(t *testing.T) {
12271203
storageClient, err := storage.NewClient(storage.Config{
1228-
Driver: "sqlite",
1229-
Options: map[string]any{
1230-
"data_source_name": ":memory:",
1231-
},
1204+
ConnectionString: ":memory:",
12321205
})
12331206
assert.NoError(t, err)
12341207

garden-app/server/notification_clients_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ import (
1818

1919
func TestNotificationClientAPI(t *testing.T) {
2020
storageClient, err := storage.NewClient(storage.Config{
21-
Driver: "sqlite",
22-
Options: map[string]any{
23-
"data_source_name": ":memory:",
24-
},
21+
ConnectionString: ":memory:",
2522
})
2623
require.NoError(t, err)
2724

garden-app/server/read_only_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ import (
1414

1515
func TestReadOnlyMiddleware(t *testing.T) {
1616
storageClient, err := storage.NewClient(storage.Config{
17-
Driver: "sqlite",
18-
Options: map[string]any{
19-
"data_source_name": ":memory:",
20-
},
17+
ConnectionString: ":memory:",
2118
})
2219
assert.NoError(t, err)
2320

garden-app/server/vcr/testdata/vcr_server/config.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,4 @@ influxdb:
1111
org: "garden"
1212
bucket: "garden"
1313
storage:
14-
driver: "sqlite"
15-
options:
16-
data_source_name: "./server/vcr/testdata/vcr_server/garden.db"
14+
connection_string: "./server/vcr/testdata/vcr_server/garden.db"

garden-app/server/water_routine_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@ func TestWaterRoutine(t *testing.T) {
2828
defer func() { worker.CreateNewID = xid.New }()
2929

3030
storageClient, err := storage.NewClient(storage.Config{
31-
Driver: "sqlite",
32-
Options: map[string]any{
33-
"data_source_name": ":memory:",
34-
},
31+
ConnectionString: ":memory:",
3532
})
3633
assert.NoError(t, err)
3734

garden-app/server/water_schedule_test.go

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,7 @@ func TestGetWaterSchedule(t *testing.T) {
148148

149149
t.Run("ErrNotFound", func(t *testing.T) {
150150
storageClient, err := storage.NewClient(storage.Config{
151-
Driver: "sqlite",
152-
Options: map[string]any{
153-
"data_source_name": ":memory:",
154-
},
151+
ConnectionString: ":memory:",
155152
})
156153
assert.NoError(t, err)
157154

@@ -181,10 +178,7 @@ func TestGetWaterSchedule(t *testing.T) {
181178
influxdbClient.On("Close")
182179

183180
storageClient, err := storage.NewClient(storage.Config{
184-
Driver: "sqlite",
185-
Options: map[string]any{
186-
"data_source_name": ":memory:",
187-
},
181+
ConnectionString: ":memory:",
188182
})
189183
assert.NoError(t, err)
190184

@@ -263,10 +257,7 @@ func TestUpdateWaterSchedule(t *testing.T) {
263257
for _, tt := range tests {
264258
t.Run(tt.name, func(t *testing.T) {
265259
storageClient, err := storage.NewClient(storage.Config{
266-
Driver: "sqlite",
267-
Options: map[string]any{
268-
"data_source_name": ":memory:",
269-
},
260+
ConnectionString: ":memory:",
270261
})
271262
assert.NoError(t, err)
272263

@@ -336,10 +327,7 @@ func TestEndDateWaterSchedule(t *testing.T) {
336327
for _, tt := range tests {
337328
t.Run(tt.name, func(t *testing.T) {
338329
storageClient, err := storage.NewClient(storage.Config{
339-
Driver: "sqlite",
340-
Options: map[string]any{
341-
"data_source_name": ":memory:",
342-
},
330+
ConnectionString: ":memory:",
343331
})
344332
assert.NoError(t, err)
345333

@@ -397,10 +385,7 @@ func TestGetAllWaterSchedules(t *testing.T) {
397385
for _, tt := range tests {
398386
t.Run(tt.name, func(t *testing.T) {
399387
storageClient, err := storage.NewClient(storage.Config{
400-
Driver: "sqlite",
401-
Options: map[string]any{
402-
"data_source_name": ":memory:",
403-
},
388+
ConnectionString: ":memory:",
404389
})
405390
assert.NoError(t, err)
406391
err = storageClient.WaterSchedules.Set(context.Background(), waterSchedule)
@@ -495,10 +480,7 @@ func TestCreateWaterSchedule(t *testing.T) {
495480
for _, tt := range tests {
496481
t.Run(tt.name, func(t *testing.T) {
497482
storageClient, err := storage.NewClient(storage.Config{
498-
Driver: "sqlite",
499-
Options: map[string]any{
500-
"data_source_name": ":memory:",
501-
},
483+
ConnectionString: ":memory:",
502484
})
503485
assert.NoError(t, err)
504486

@@ -568,10 +550,7 @@ func TestUpdateWaterSchedulePUT(t *testing.T) {
568550
for _, tt := range tests {
569551
t.Run(tt.name, func(t *testing.T) {
570552
storageClient, err := storage.NewClient(storage.Config{
571-
Driver: "sqlite",
572-
Options: map[string]any{
573-
"data_source_name": ":memory:",
574-
},
553+
ConnectionString: ":memory:",
575554
})
576555
assert.NoError(t, err)
577556

0 commit comments

Comments
 (0)