use serde::{self, Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct Params {
#[serde(rename = "userid")]
pub r#userid: Option<i64>,
#[serde(rename = "limit")]
pub r#limit: Option<i64>,
#[serde(rename = "offset")]
pub r#offset: Option<i64>,
#[serde(rename = "sort")]
pub r#sort: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsItem {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "fullname")]
pub r#fullname: Option<String>,
#[serde(rename = "shortname")]
pub r#shortname: Option<String>,
#[serde(rename = "idnumber")]
pub r#idnumber: Option<String>,
#[serde(rename = "summary")]
pub r#summary: Option<String>,
#[serde(rename = "summaryformat")]
pub r#summaryformat: Option<i64>,
#[serde(rename = "startdate")]
pub r#startdate: Option<i64>,
#[serde(rename = "enddate")]
pub r#enddate: Option<i64>,
#[serde(rename = "visible")]
pub r#visible: Option<bool>,
#[serde(rename = "showactivitydates")]
pub r#showactivitydates: Option<bool>,
#[serde(rename = "showcompletionconditions")]
pub r#showcompletionconditions: Option<bool>,
#[serde(rename = "pdfexportfont")]
pub r#pdfexportfont: Option<String>,
#[serde(rename = "fullnamedisplay")]
pub r#fullnamedisplay: Option<String>,
#[serde(rename = "viewurl")]
pub r#viewurl: Option<String>,
#[serde(rename = "courseimage")]
pub r#courseimage: Option<String>,
#[serde(rename = "progress")]
pub r#progress: Option<i64>,
#[serde(rename = "hasprogress")]
pub r#hasprogress: Option<bool>,
#[serde(rename = "isfavourite")]
pub r#isfavourite: Option<bool>,
#[serde(rename = "hidden")]
pub r#hidden: Option<bool>,
#[serde(rename = "timeaccess")]
pub r#timeaccess: Option<i64>,
#[serde(rename = "showshortname")]
pub r#showshortname: Option<bool>,
#[serde(rename = "coursecategory")]
pub r#coursecategory: Option<String>,
}
pub type r#Returns = Vec<ReturnsItem>;
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_recent_courses", 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_recent_courses", params).await
}