recorder implementations
All checks were successful
Build and Publish / release (push) Has been skipped
Build and Publish / check-chart (push) Successful in 11s
Build and Publish / helm-release (push) Has been skipped

This commit is contained in:
2025-03-22 12:05:25 -04:00
parent fb6941e6bd
commit b483fc22a3
16 changed files with 498 additions and 71 deletions

View File

@@ -21,6 +21,10 @@ import (
"gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/provider/wunderground"
"gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/weather"
"gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/weather/recorder"
"gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/weather/recorder/recorders"
"gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/weather/recorder/recorders/memory"
"gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/weather/recorder/recorders/noop"
"gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/weather/recorder/recorders/redis"
)
const defUpdatesToKeep = 120
@@ -70,10 +74,22 @@ func (aw *AmbientWeather) Init() *AmbientWeather {
}
span.SetAttributes(attribute.Int("updatesToKeep", updatesToKeep))
// TODO: Support other recorders (don't rely on default)
aw.weatherRecorder = recorder.NewWeatherRecorder(&recorder.Opts{
// Choose weather recorder for grpc / api requests,
// default is memory recorder
var r recorders.Recorder
switch aw.Config.RecorderConfig.Type {
case config.TypeMemory:
r = &memory.MemoryRecorder{}
case config.TypeRedis:
r = &redis.RedisRecorder{}
case config.TypeNoop:
r = &noop.NoopRecorder{}
}
aw.weatherRecorder = recorder.MustNewWeatherRecorder(&recorder.Opts{
Ctx: aw.appCtx,
KeepLast: updatesToKeep,
Recorder: r,
})
aw.l.Trace().Any("awConfig", aw.Config).Send()