in src/psearch/serving/internal/services/spanner_service.go [65:82]
func (s *SpannerService) GetProduct(ctx context.Context, productID string) (map[string]interface{}, error) {
row, err := s.client.Single().ReadRow(ctx, "products", spanner.Key{productID}, []string{"product_data"})
if err != nil {
return nil, fmt.Errorf("failed to read product %s: %v", productID, err)
}
var productDataJSON string
if err := row.Column(0, &productDataJSON); err != nil {
return nil, fmt.Errorf("failed to scan product data: %v", err)
}
var productData map[string]interface{}
if err := json.Unmarshal([]byte(productDataJSON), &productData); err != nil {
return nil, fmt.Errorf("failed to unmarshal product data: %v", err)
}
return productData, nil
}