category/
category.rs

1use rust_woocommerce::{ApiClient, Config};
2use rust_woocommerce::{Category, DisplayOption};
3use tracing::info;
4
5#[tokio::main]
6async fn main() -> anyhow::Result<()> {
7    tracing_subscriber::fmt::init();
8    let config = Config::new("woo.toml")?;
9    let client = ApiClient::new(&config)?;
10    let categories = client.list_all::<Category>().await?;
11    info!("Got {} categories", categories.len());
12    let random_id = categories.first().unwrap().id;
13    let retrieved: Category = client.retrieve(random_id).await?;
14    info!("Retrieved category name: {}", retrieved.name);
15    let create = Category::create("Test Category")
16        .parent(retrieved.id)
17        .description("Test description")
18        .display(DisplayOption::Products)
19        .image("https://woocommerce.github.io/woocommerce-rest-api-docs/images/logo-95f5c1ab.png");
20    let batch_create = create.clone();
21    let created: Category = client.create(create).await?;
22    info!("Category with id: {} created", created.id);
23    let update = Category::update().description("Some description");
24    let updated: Category = client.update(created.id, update).await?;
25    info!("New description is {}", updated.description);
26    let deleted: Category = client.delete(updated.id).await?;
27    info!("Category {} deleted", deleted.name);
28    let batch_created: Vec<Category> = client.batch_create(vec![batch_create]).await?;
29    info!("Batch created {} categories", batch_created.len());
30    let batch_update = Category::update()
31        .id(batch_created.first().unwrap().id)
32        .description("Some description");
33    let batch_updated: Vec<Category> = client.batch_update(vec![batch_update]).await?;
34    let id = batch_updated.first().unwrap().id;
35    info!("Batch updated categories contains category with id: {id}");
36    let batch_deleted: Vec<Category> = client.batch_delete(vec![id]).await?;
37    info!("Deleted {} categories", batch_deleted.len());
38    Ok(())
39}