canvas_lms_api/resources/
progress.rs1use crate::{error::Result, http::Requester};
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4use std::sync::Arc;
5
6#[derive(Debug, Clone, Deserialize, Serialize, canvas_lms_api_derive::CanvasResource)]
10pub struct Progress {
11 pub id: u64,
12 pub context_id: Option<u64>,
13 pub context_type: Option<String>,
14 pub user_id: Option<u64>,
15 pub tag: Option<String>,
16 pub completion: Option<f64>,
17 pub workflow_state: Option<String>,
18 pub created_at: Option<DateTime<Utc>>,
19 pub updated_at: Option<DateTime<Utc>>,
20 pub message: Option<String>,
21 pub results: Option<serde_json::Value>,
22 pub url: Option<String>,
23
24 #[serde(skip)]
25 pub(crate) requester: Option<Arc<Requester>>,
26}
27
28impl Progress {
29 pub async fn query(&self) -> Result<Progress> {
34 let mut p: Progress = self
35 .req()
36 .get(&format!("progress/{}", self.id), &[])
37 .await?;
38 p.requester = self.requester.clone();
39 Ok(p)
40 }
41}