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}