use super::cache::CacheData;
use crate::model::prelude::*;
use std::fmt;
#[derive(Clone, Debug, Deserialize)]
#[non_exhaustive]
pub struct Response<T: Clone + fmt::Debug + AsRef<T>> {
#[serde(rename = "success")]
pub is_success: bool,
pub error: Option<ErrorResponse>,
pub cache: Option<CacheData>,
pub data: Option<T>,
}
impl<T: Clone + fmt::Debug + AsRef<T>> AsRef<Response<T>> for Response<T> {
fn as_ref(&self) -> &Self {
self
}
}
#[derive(Clone, Debug, Deserialize)]
#[non_exhaustive]
pub struct ErrorResponse {
pub msg: Option<String>,
pub key: Option<String>,
pub context: Option<String>,
}
impl AsRef<ErrorResponse> for ErrorResponse {
fn as_ref(&self) -> &Self {
self
}
}