implement count rpc
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-27 15:32:10 -04:00
parent eeea3c7cb7
commit d847c36715
9 changed files with 345 additions and 52 deletions

View File

@ -9,6 +9,7 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"google.golang.org/protobuf/types/known/timestamppb"
"k8s.io/utils/ptr"
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
@ -31,6 +32,27 @@ func NewGRPCWeather(ctx context.Context, recorder *recorder.WeatherRecorder) *GR
}
}
func (w *GRPCWeather) CountWeatherUpdates(ctx context.Context, req *pb.CountWeatherUpdatesRequest) (
*pb.CountWeatherUpdatesResponse, error,
) {
if req.Opts == nil {
count := w.recorder.Count(ctx)
return &pb.CountWeatherUpdatesResponse{Count: int32(count)}, nil
}
resp, err := w.GetWeather(ctx, &pb.GetWeatherRequest{
Opts: req.Opts,
Limit: ptr.To(int32(-1)),
})
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
return &pb.CountWeatherUpdatesResponse{
Count: int32(len(resp.WeatherUpdates)),
}, nil
}
func (w *GRPCWeather) GetWeather(ctx context.Context, req *pb.GetWeatherRequest) (
*pb.GetWeatherResponse, error,
) {