use serde::{self, Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct Params {
#[serde(rename = "cmid")]
pub r#cmid: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsCmAdvancedgradingItem {
#[serde(rename = "area")]
pub r#area: Option<String>,
#[serde(rename = "method")]
pub r#method: Option<String>,
}
pub type r#ReturnsCmAdvancedgrading = Vec<ReturnsCmAdvancedgradingItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsCmOutcomesItem {
#[serde(rename = "id")]
pub r#id: Option<String>,
#[serde(rename = "name")]
pub r#name: Option<String>,
#[serde(rename = "scale")]
pub r#scale: Option<String>,
}
pub type r#ReturnsCmOutcomes = Vec<ReturnsCmOutcomesItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsCm {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "course")]
pub r#course: Option<i64>,
#[serde(rename = "module")]
pub r#module: Option<i64>,
#[serde(rename = "name")]
pub r#name: Option<String>,
#[serde(rename = "modname")]
pub r#modname: Option<String>,
#[serde(rename = "instance")]
pub r#instance: Option<i64>,
#[serde(rename = "section")]
pub r#section: Option<i64>,
#[serde(rename = "sectionnum")]
pub r#sectionnum: Option<i64>,
#[serde(rename = "groupmode")]
pub r#groupmode: Option<i64>,
#[serde(rename = "groupingid")]
pub r#groupingid: Option<i64>,
#[serde(rename = "completion")]
pub r#completion: Option<i64>,
#[serde(rename = "idnumber")]
pub r#idnumber: Option<String>,
#[serde(rename = "added")]
pub r#added: Option<i64>,
#[serde(rename = "score")]
pub r#score: Option<i64>,
#[serde(rename = "indent")]
pub r#indent: Option<i64>,
#[serde(rename = "visible")]
pub r#visible: Option<i64>,
#[serde(rename = "visibleoncoursepage")]
pub r#visibleoncoursepage: Option<i64>,
#[serde(rename = "visibleold")]
pub r#visibleold: Option<i64>,
#[serde(rename = "completiongradeitemnumber")]
pub r#completiongradeitemnumber: Option<i64>,
#[serde(rename = "completionpassgrade")]
pub r#completionpassgrade: Option<i64>,
#[serde(rename = "completionview")]
pub r#completionview: Option<i64>,
#[serde(rename = "completionexpected")]
pub r#completionexpected: Option<i64>,
#[serde(rename = "showdescription")]
pub r#showdescription: Option<i64>,
#[serde(rename = "downloadcontent")]
pub r#downloadcontent: Option<i64>,
#[serde(rename = "availability")]
pub r#availability: Option<String>,
#[serde(rename = "grade")]
pub r#grade: Option<f64>,
#[serde(rename = "scale")]
pub r#scale: Option<String>,
#[serde(rename = "gradepass")]
pub r#gradepass: Option<String>,
#[serde(rename = "gradecat")]
pub r#gradecat: Option<i64>,
#[serde(rename = "advancedgrading")]
pub r#advancedgrading: Option<r#ReturnsCmAdvancedgrading>,
#[serde(rename = "outcomes")]
pub r#outcomes: Option<r#ReturnsCmOutcomes>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsWarningsItem {
#[serde(rename = "item")]
pub r#item: Option<String>,
#[serde(rename = "itemid")]
pub r#itemid: Option<i64>,
#[serde(rename = "warningcode")]
pub r#warningcode: Option<String>,
#[serde(rename = "message")]
pub r#message: Option<String>,
}
pub type r#ReturnsWarnings = Vec<ReturnsWarningsItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct Returns {
#[serde(rename = "cm")]
pub r#cm: Option<ReturnsCm>,
#[serde(rename = "warnings")]
pub r#warnings: Option<r#ReturnsWarnings>,
}
pub async fn call<'a>(
client: &'a mut moodle_client::MoodleClient,
params: &'a mut Params,
) -> anyhow::Result<Returns> {
let json = client.post("core_course_get_course_module", params).await?;
serde_json::from_value(json).map_err(|e| e.into())
}
pub async fn call_raw<'a>(
client: &'a mut moodle_client::MoodleClient,
params: &'a mut Params,
) -> anyhow::Result<serde_json::Value> {
client.post("core_course_get_course_module", params).await
}