From 7cacf7b5e9915609e2ae634f3fdd9d3fa1141e92 Mon Sep 17 00:00:00 2001
From: Maaz Ahmed <maaz.a@subcom.tech>
Date: Wed, 10 Jan 2024 12:44:24 +0530
Subject: [PATCH] feat: Serde deserialize and serialize on Data and related
 types

Feature gated under "serde" feature
---
 Cargo.lock    | 3 +--
 Cargo.toml    | 3 ++-
 src/result.rs | 4 ++++
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 52e271a..347a6d3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -830,8 +830,7 @@ dependencies = [
 [[package]]
 name = "prometheus-http-query"
 version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0de773a6ba25c9164ed9d86d653a92fac759a6f0e683fd141d56bb96e80fd8b"
+source = "git+https://github.com/VoltaireNoir/prometheus-http-query/#d2c90243b017f77b8149fba39c165a7e28e4ad95"
 dependencies = [
  "enum-as-inner",
  "mime",
diff --git a/Cargo.toml b/Cargo.toml
index 696fc51..5a74b63 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2021"
 
 [dependencies]
 enum-as-inner = "0.6.0"
-prometheus-http-query = "0.8.1"
+prometheus-http-query = { git = "https://github.com/VoltaireNoir/prometheus-http-query/"}
 reqwest = "0.11.22"
 url = "2.5.0"
 serde = { version = "1.0.193", optional = true }
@@ -22,6 +22,7 @@ utils = ["dep:serde", "dep:serde_json", "dep:rayon"]
 metricsql = []
 macros = ["dep:mquery-macros"]
 multi = ["dep:tokio"]
+serde = ["dep:serde"]
 
 [dev-dependencies]
 tokio = { version = "1.34.0", default-features = false, features = ["macros", "rt-multi-thread"]}
diff --git a/src/result.rs b/src/result.rs
index 6849333..e7d949e 100644
--- a/src/result.rs
+++ b/src/result.rs
@@ -10,6 +10,9 @@ use enum_as_inner::EnumAsInner;
 use prometheus_http_query::{error, response};
 use std::fmt::{self, Display};
 
+#[cfg(feature = "serde")]
+use serde::{Deserialize, Serialize};
+
 pub type QryResult = std::result::Result<Data, Error>;
 pub type RawResult = std::result::Result<reqwest::Response, Error>;
 
@@ -34,6 +37,7 @@ impl IntoResult for Result<reqwest::Response, error::Error> {
 }
 
 /// A wrapper for possible result types of expression queries
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
 #[derive(Clone, Debug, EnumAsInner)]
 pub enum Data {
     Vector(Vec<response::InstantVector>),
-- 
GitLab