rust-woocommerce 0.1.3

Framework for woocommerce
Documentation
use serde_with::skip_serializing_none;

pub mod coupons;
pub mod customers;
pub mod data;
pub mod order_notes;
pub mod orders;
pub mod payment_gateways;
pub mod product_attribute_terms;
pub mod product_attributes;
pub mod product_categories;
pub mod product_reviews;
pub mod product_shipping_classes;
pub mod product_tags;
pub mod product_variations;
pub mod products;
pub mod refunds;
pub mod reports;
pub mod settings;
pub mod shipping_methods;
pub mod shipping_zone_locations;
pub mod shipping_zone_methods;
pub mod shipping_zones;
pub mod tax_classes;
pub mod tax_rates;
pub mod webhooks;
#[skip_serializing_none]
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct MetaData {
    pub id: Option<i32>,
    pub key: String,
    pub value: serde_json::Value,
}
#[skip_serializing_none]
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct BatchObject<O: serde::Serialize> {
    pub create: Option<Vec<O>>,
    pub update: Option<Vec<O>>,
    pub delete: Option<Vec<O>>,
}
impl<O> BatchObject<O>
where
    O: serde::Serialize,
{
    pub fn builder() -> BatchObjectBuilder<O>
    where
        O: serde::Serialize + Clone,
    {
        BatchObjectBuilder::default()
    }
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct BatchObjectBuilder<O: serde::Serialize> {
    pub create: Option<Vec<O>>,
    pub update: Option<Vec<O>>,
    pub delete: Option<Vec<O>>,
}
impl<O> Default for BatchObjectBuilder<O>
where
    O: serde::Serialize + Clone,
{
    fn default() -> Self {
        Self {
            create: None,
            update: None,
            delete: None,
        }
    }
}
impl<O> BatchObjectBuilder<O>
where
    O: serde::Serialize + Clone,
{
    pub fn add_create(&mut self, object: O) -> &mut Self {
        self.create.get_or_insert(vec![]).push(object);
        self
    }
    pub fn add_update(&mut self, object: O) -> &mut Self {
        self.update.get_or_insert(vec![]).push(object);
        self
    }
    pub fn add_delete(&mut self, object: O) -> &mut Self {
        self.delete.get_or_insert(vec![]).push(object);
        self
    }
    pub fn extend_create(&mut self, vec: Vec<O>) -> &mut Self {
        self.create.get_or_insert(vec![]).extend(vec);
        self
    }
    pub fn extend_update(&mut self, vec: Vec<O>) -> &mut Self {
        self.update.get_or_insert(vec![]).extend(vec);
        self
    }
    pub fn extend_delete(&mut self, vec: Vec<O>) -> &mut Self {
        self.delete.get_or_insert(vec![]).extend(vec);
        self
    }
    pub fn build(&self) -> BatchObject<O> {
        BatchObject {
            create: self.create.clone(),
            update: self.update.clone(),
            delete: self.delete.clone(),
        }
    }
}