use crate::types::snowflake_id::SnowflakeId;
pub struct CreateProductCmd {
pub category_id: Option<i64>,
pub title: String,
pub description: Option<String>,
pub cover_url: Option<String>,
pub product_type: String,
pub fulfillment_type: String,
pub delivery_hook: Option<String>,
pub weight: Option<i64>,
pub price: i64,
pub currency: String,
pub attributes: Option<String>,
pub sort_order: i64,
pub slug: Option<String>,
pub content: Option<String>,
pub image_ids: Option<String>,
pub original_price: Option<i64>,
pub specs: Option<String>,
pub unit: String,
pub min_purchase: i64,
pub max_purchase: Option<i64>,
pub virtual_sales: i64,
pub meta_title: Option<String>,
pub meta_description: Option<String>,
pub stock: i64,
pub cost_price: Option<i64>,
pub sale_price: Option<i64>,
pub has_variants: bool,
}
pub struct UpdateProductCmd {
pub id: SnowflakeId,
pub category_id: Option<i64>,
pub title: String,
pub description: Option<String>,
pub cover_url: Option<String>,
pub product_type: String,
pub fulfillment_type: String,
pub delivery_hook: Option<String>,
pub weight: Option<i64>,
pub price: i64,
pub currency: String,
pub status: String,
pub attributes: Option<String>,
pub sort_order: i64,
pub slug: Option<String>,
pub content: Option<String>,
pub image_ids: Option<String>,
pub original_price: Option<i64>,
pub specs: Option<String>,
pub unit: String,
pub min_purchase: i64,
pub max_purchase: Option<i64>,
pub total_sales: i64,
pub virtual_sales: i64,
pub meta_title: Option<String>,
pub meta_description: Option<String>,
pub published_at: Option<String>,
pub stock: i64,
pub cost_price: Option<i64>,
pub sale_price: Option<i64>,
pub has_variants: bool,
pub version: i64,
}