use serde::{self, Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct Params {
#[serde(rename = "userid")]
pub r#userid: Option<i64>,
#[serde(rename = "returnusercount")]
pub r#returnusercount: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsItemOverviewfilesItem {
#[serde(rename = "filename")]
pub r#filename: Option<String>,
#[serde(rename = "filepath")]
pub r#filepath: Option<String>,
#[serde(rename = "filesize")]
pub r#filesize: Option<i64>,
#[serde(rename = "fileurl")]
pub r#fileurl: Option<String>,
#[serde(rename = "timemodified")]
pub r#timemodified: Option<i64>,
#[serde(rename = "mimetype")]
pub r#mimetype: Option<String>,
#[serde(rename = "isexternalfile")]
pub r#isexternalfile: Option<bool>,
#[serde(rename = "repositorytype")]
pub r#repositorytype: Option<String>,
}
pub type r#ReturnsItemOverviewfiles = Vec<ReturnsItemOverviewfilesItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsItem {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "shortname")]
pub r#shortname: Option<String>,
#[serde(rename = "fullname")]
pub r#fullname: Option<String>,
#[serde(rename = "displayname")]
pub r#displayname: Option<String>,
#[serde(rename = "enrolledusercount")]
pub r#enrolledusercount: Option<i64>,
#[serde(rename = "idnumber")]
pub r#idnumber: Option<String>,
#[serde(rename = "visible")]
pub r#visible: Option<i64>,
#[serde(rename = "summary")]
pub r#summary: Option<String>,
#[serde(rename = "summaryformat")]
pub r#summaryformat: Option<i64>,
#[serde(rename = "format")]
pub r#format: Option<String>,
#[serde(rename = "courseimage")]
pub r#courseimage: Option<String>,
#[serde(rename = "showgrades")]
pub r#showgrades: Option<bool>,
#[serde(rename = "lang")]
pub r#lang: Option<String>,
#[serde(rename = "enablecompletion")]
pub r#enablecompletion: Option<bool>,
#[serde(rename = "completionhascriteria")]
pub r#completionhascriteria: Option<bool>,
#[serde(rename = "completionusertracked")]
pub r#completionusertracked: Option<bool>,
#[serde(rename = "category")]
pub r#category: Option<i64>,
#[serde(rename = "progress")]
pub r#progress: Option<f64>,
#[serde(rename = "completed")]
pub r#completed: Option<bool>,
#[serde(rename = "startdate")]
pub r#startdate: Option<i64>,
#[serde(rename = "enddate")]
pub r#enddate: Option<i64>,
#[serde(rename = "marker")]
pub r#marker: Option<i64>,
#[serde(rename = "lastaccess")]
pub r#lastaccess: Option<i64>,
#[serde(rename = "isfavourite")]
pub r#isfavourite: Option<bool>,
#[serde(rename = "hidden")]
pub r#hidden: Option<bool>,
#[serde(rename = "overviewfiles")]
pub r#overviewfiles: Option<r#ReturnsItemOverviewfiles>,
#[serde(rename = "showactivitydates")]
pub r#showactivitydates: Option<bool>,
#[serde(rename = "showcompletionconditions")]
pub r#showcompletionconditions: Option<bool>,
#[serde(rename = "timemodified")]
pub r#timemodified: Option<i64>,
}
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_enrol_get_users_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_enrol_get_users_courses", params).await
}