From 5ab462408f16c2607650c368a31c64e37e5c3372 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 9 May 2019 11:05:44 +0200
Subject: [PATCH] Implemented optional caches

---
 config.go |  4 ++--
 main.go   | 21 +++++++++++++--------
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/config.go b/config.go
index 020ab1e..3149d20 100644
--- a/config.go
+++ b/config.go
@@ -16,8 +16,8 @@ type EndpointConfig struct {
 }
 
 type CacheConfig struct {
-	Redis  RedisCacheConfig  `yaml:"redis"`
-	Memory MemoryCacheConfig `yaml:"memory"`
+	Redis  *RedisCacheConfig  `yaml:"redis"`
+	Memory *MemoryCacheConfig `yaml:"memory"`
 }
 
 type RedisCacheConfig struct {
diff --git a/main.go b/main.go
index ddffa64..9c9e2ac 100644
--- a/main.go
+++ b/main.go
@@ -56,6 +56,18 @@ func main() {
 
 	autocompleteStations := loadAutocompleteStations()
 
+	var caches []bahn.CacheBackend
+	if config.Caches.Memory != nil {
+		caches = append(caches, NewMemoryCache(config.Caches.Memory.Timeout))
+	}
+	if config.Caches.Redis != nil {
+		caches = append(caches, NewRedisCache(
+			config.Caches.Redis.Address,
+			config.Caches.Redis.Password,
+			config.Caches.Redis.Timeout,
+		))
+	}
+
 	apiClient := bahn.ApiClient{
 		IrisBaseUrl:          config.Endpoints.Iris,
 		CoachSequenceBaseUrl: config.Endpoints.CoachSequence,
@@ -63,14 +75,7 @@ func main() {
 		HttpClient: &http.Client{
 			Timeout: config.RequestTimeout,
 		},
-		Caches: []bahn.CacheBackend{
-			NewMemoryCache(config.Caches.Memory.Timeout),
-			NewRedisCache(
-				config.Caches.Redis.Address,
-				config.Caches.Redis.Password,
-				config.Caches.Redis.Timeout,
-			),
-		},
+		Caches: caches,
 	}
 
 	http.HandleFunc("/autocomplete/", func(w http.ResponseWriter, r *http.Request) {
-- 
GitLab