scout_rs 0.95.95

A Rust client for the synchornizing state with the Scout database
Documentation
use super::manufacturer::Manufacturer;
use super::v1::EntityLifecycle;
use serde::{Deserialize, Serialize};

/// A higher-level product line/family (`public.products`); one manufacturer, many product_numbers.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Product {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub id: Option<i64>,
    pub manufacturer_id: i64,
    pub name: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub website: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub category: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub image_uri: Option<String>,
    #[serde(default)]
    pub lifecycle: EntityLifecycle,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub lifecycle_changed_at: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub lifecycle_changed_by: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub lifecycle_reason: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub inserted_at: Option<String>,
}

/// Product line + manufacturer resolved for a part (via its product_number).
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PartProductInfo {
    pub product: Option<Product>,
    pub manufacturer: Option<Manufacturer>,
}