refactor(go): simplify redis realtime projections
This commit is contained in:
@@ -58,7 +58,7 @@ func main() {
|
||||
mux.Handle("/swagger-ui/", realtime.NewSwaggerUIHandler())
|
||||
mux.Handle("/api/realtime/vehicles/", realtime.NewHandler(repository))
|
||||
closeStats := func() {}
|
||||
var updater realtimeUpdater = repository
|
||||
var updater realtimeUpdater = fastRealtimeUpdater{repository: repository}
|
||||
if dsn := strings.TrimSpace(os.Getenv("MYSQL_DSN")); dsn != "" {
|
||||
db, err := sql.Open("mysql", dsn)
|
||||
if err != nil {
|
||||
@@ -93,7 +93,7 @@ func main() {
|
||||
envInt("MYSQL_REALTIME_ASYNC_WORKERS", 4),
|
||||
)
|
||||
}
|
||||
updater = compositeRealtimeUpdater{primary: repository, secondary: mysqlUpdater}
|
||||
updater = compositeRealtimeUpdater{primary: fastRealtimeUpdater{repository: repository}, secondary: mysqlUpdater}
|
||||
logger.Info("realtime mysql snapshot enabled", "table", "vehicle_realtime_snapshot", "plate_binding_table", bindingTable, "plate_cache_ttl_seconds", envInt("PLATE_CACHE_TTL_SECONDS", 600))
|
||||
}
|
||||
mux.Handle("/api/stats/daily-metrics", stats.NewMetricHandler(stats.NewMetricRepository(db)))
|
||||
@@ -216,6 +216,14 @@ type realtimeUpdater interface {
|
||||
Update(context.Context, envelope.FrameEnvelope) error
|
||||
}
|
||||
|
||||
type fastRealtimeUpdater struct {
|
||||
repository *realtime.Repository
|
||||
}
|
||||
|
||||
func (u fastRealtimeUpdater) Update(ctx context.Context, env envelope.FrameEnvelope) error {
|
||||
return u.repository.FastUpdate(ctx, env)
|
||||
}
|
||||
|
||||
type compositeRealtimeUpdater struct {
|
||||
primary realtimeUpdater
|
||||
secondary realtimeUpdater
|
||||
|
||||
Reference in New Issue
Block a user