use crate::error::ClientError;
use super::Client;
#[derive(Debug, PartialEq)]
pub struct Product {
pub product_id: String,
pub product_namespace: String,
pub owner: String,
pub properties: Vec<PropertyValue>,
}
#[derive(Debug, PartialEq)]
pub struct PropertyValue {
pub name: String,
pub data_type: String,
pub bytes_value: Option<Vec<u8>>,
pub boolean_value: Option<bool>,
pub number_value: Option<i64>,
pub string_value: Option<String>,
pub enum_value: Option<u32>,
pub struct_values: Option<Vec<String>>,
pub lat_long_value: Option<LatLong>,
}
#[derive(Debug, PartialEq)]
pub struct LatLong {
pub latitude: i64,
pub longitude: i64,
}
pub trait ProductClient: Client {
fn get_product(
&self,
product_id: String,
service_id: Option<&str>,
) -> Result<Product, ClientError>;
fn list_products(&self, service_id: Option<&str>) -> Result<Vec<Product>, ClientError>;
}