Skip to content
Snippets Groups Projects
Commit 5bc6406e authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Further cache fixes

parent 30070c85
No related branches found
No related tags found
No related merge requests found
...@@ -46,9 +46,23 @@ func (c *ApiClient) loadWithCache(key string, result interface{}, load func() (i ...@@ -46,9 +46,23 @@ func (c *ApiClient) loadWithCache(key string, result interface{}, load func() (i
func (c *ApiClient) Station(evaId int64) ([]Station, error) { func (c *ApiClient) Station(evaId int64) ([]Station, error) {
key := fmt.Sprintf("realtime_recent %d", evaId) key := fmt.Sprintf("realtime_recent %d", evaId)
var result []Station var result []Station
err := c.loadWithCache(key, &result, func() (interface{}, error) { for _, cache := range c.Caches {
return c.loadStation(evaId) if err := cache.Get(key, result); err == nil {
}) for _, targetCache := range c.Caches {
if targetCache == cache {
break
}
_ = targetCache.Set(key, result)
}
return result, err
}
}
var err error
if result, err = c.loadStation(evaId); err == nil {
for _, cache := range c.Caches {
_ = cache.Set(key, result)
}
}
return result, err return result, err
} }
...@@ -79,9 +93,23 @@ func (c *ApiClient) Timetable(evaId int64, date time.Time) (Timetable, error) { ...@@ -79,9 +93,23 @@ func (c *ApiClient) Timetable(evaId int64, date time.Time) (Timetable, error) {
key := fmt.Sprintf("timetable %d %s", evaId, date.Format(cacheTimestamp)) key := fmt.Sprintf("timetable %d %s", evaId, date.Format(cacheTimestamp))
var result Timetable var result Timetable
err := c.loadWithCache(key, &result, func() (interface{}, error) { for _, cache := range c.Caches {
return c.loadTimetable(evaId, date) if err := cache.Get(key, result); err == nil {
}) for _, targetCache := range c.Caches {
if targetCache == cache {
break
}
_ = targetCache.Set(key, result)
}
return result, err
}
}
var err error
if result, err = c.loadTimetable(evaId, date); err == nil {
for _, cache := range c.Caches {
_ = cache.Set(key, result)
}
}
return result, err return result, err
} }
...@@ -113,9 +141,23 @@ func (c *ApiClient) RealtimeAll(evaId int64, date time.Time) (Timetable, error) ...@@ -113,9 +141,23 @@ func (c *ApiClient) RealtimeAll(evaId int64, date time.Time) (Timetable, error)
key := fmt.Sprintf("realtime_all %d %s", evaId, date.Format(cacheTimestamp)) key := fmt.Sprintf("realtime_all %d %s", evaId, date.Format(cacheTimestamp))
var result Timetable var result Timetable
err := c.loadWithCache(key, &result, func() (interface{}, error) { for _, cache := range c.Caches {
return c.loadRealtimeAll(evaId, date) if err := cache.Get(key, result); err == nil {
}) for _, targetCache := range c.Caches {
if targetCache == cache {
break
}
_ = targetCache.Set(key, result)
}
return result, err
}
}
var err error
if result, err = c.loadRealtimeAll(evaId, date); err == nil {
for _, cache := range c.Caches {
_ = cache.Set(key, result)
}
}
return result, err return result, err
} }
...@@ -146,9 +188,23 @@ func (c *ApiClient) RealtimeRecent(evaId int64, date time.Time) (Timetable, erro ...@@ -146,9 +188,23 @@ func (c *ApiClient) RealtimeRecent(evaId int64, date time.Time) (Timetable, erro
key := fmt.Sprintf("realtime_recent %d %s", evaId, date.Format(cacheTimestamp)) key := fmt.Sprintf("realtime_recent %d %s", evaId, date.Format(cacheTimestamp))
var result Timetable var result Timetable
err := c.loadWithCache(key, &result, func() (interface{}, error) { for _, cache := range c.Caches {
return c.loadRealtimeRecent(evaId, date) if err := cache.Get(key, result); err == nil {
}) for _, targetCache := range c.Caches {
if targetCache == cache {
break
}
_ = targetCache.Set(key, result)
}
return result, err
}
}
var err error
if result, err = c.loadRealtimeRecent(evaId, date); err == nil {
for _, cache := range c.Caches {
_ = cache.Set(key, result)
}
}
return result, err return result, err
} }
...@@ -179,9 +235,23 @@ func (c *ApiClient) WingDefinition(parent string, wing string) (WingDefinition, ...@@ -179,9 +235,23 @@ func (c *ApiClient) WingDefinition(parent string, wing string) (WingDefinition,
key := fmt.Sprintf("wing_definition %s %s", parent, wing) key := fmt.Sprintf("wing_definition %s %s", parent, wing)
var result WingDefinition var result WingDefinition
err := c.loadWithCache(key, &result, func() (interface{}, error) { for _, cache := range c.Caches {
return c.loadWingDefinition(parent, wing) if err := cache.Get(key, result); err == nil {
}) for _, targetCache := range c.Caches {
if targetCache == cache {
break
}
_ = targetCache.Set(key, result)
}
return result, err
}
}
var err error
if result, err = c.loadWingDefinition(parent, wing); err == nil {
for _, cache := range c.Caches {
_ = cache.Set(key, result)
}
}
return result, err return result, err
} }
...@@ -212,9 +282,23 @@ func (c *ApiClient) CoachSequence(line string, date time.Time) (CoachSequence, e ...@@ -212,9 +282,23 @@ func (c *ApiClient) CoachSequence(line string, date time.Time) (CoachSequence, e
key := fmt.Sprintf("coach_sequence %s %s", line, date.Format(cacheTimestamp)) key := fmt.Sprintf("coach_sequence %s %s", line, date.Format(cacheTimestamp))
var result CoachSequence var result CoachSequence
err := c.loadWithCache(key, &result, func() (interface{}, error) { for _, cache := range c.Caches {
return c.loadCoachSequence(line, date) if err := cache.Get(key, result); err == nil {
}) for _, targetCache := range c.Caches {
if targetCache == cache {
break
}
_ = targetCache.Set(key, result)
}
return result, err
}
}
var err error
if result, err = c.loadCoachSequence(line, date); err == nil {
for _, cache := range c.Caches {
_ = cache.Set(key, result)
}
}
return result, err return result, err
} }
...@@ -245,9 +329,23 @@ func (c *ApiClient) Suggestions(line string, date time.Time) ([]Suggestion, erro ...@@ -245,9 +329,23 @@ func (c *ApiClient) Suggestions(line string, date time.Time) ([]Suggestion, erro
key := fmt.Sprintf("suggestions %s %s", line, date.Format(cacheTimestamp)) key := fmt.Sprintf("suggestions %s %s", line, date.Format(cacheTimestamp))
var result []Suggestion var result []Suggestion
err := c.loadWithCache(key, &result, func() (interface{}, error) { for _, cache := range c.Caches {
return c.loadSuggestions(line, date) if err := cache.Get(key, result); err == nil {
}) for _, targetCache := range c.Caches {
if targetCache == cache {
break
}
_ = targetCache.Set(key, result)
}
return result, err
}
}
var err error
if result, err = c.loadSuggestions(line, date); err == nil {
for _, cache := range c.Caches {
_ = cache.Set(key, result)
}
}
return result, err return result, err
} }
...@@ -299,9 +397,23 @@ func (c *ApiClient) HafasMessages(trainlink string) ([]HafasMessage, error) { ...@@ -299,9 +397,23 @@ func (c *ApiClient) HafasMessages(trainlink string) ([]HafasMessage, error) {
key := fmt.Sprintf("hafas_messages %s", trainlink) key := fmt.Sprintf("hafas_messages %s", trainlink)
var result []HafasMessage var result []HafasMessage
err := c.loadWithCache(key, &result, func() (interface{}, error) { for _, cache := range c.Caches {
return c.loadHafasMessages(trainlink) if err := cache.Get(key, result); err == nil {
}) for _, targetCache := range c.Caches {
if targetCache == cache {
break
}
_ = targetCache.Set(key, result)
}
return result, err
}
}
var err error
if result, err = c.loadHafasMessages(trainlink); err == nil {
for _, cache := range c.Caches {
_ = cache.Set(key, result)
}
}
return result, err return result, err
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment