use serde::{self, Deserialize, Serialize};
pub type r#ParamsCourseids = Vec<i64>;
#[derive(Serialize, Deserialize, Debug)]
pub struct Params {
#[serde(rename = "courseids")]
pub r#courseids: Option<r#ParamsCourseids>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsLessonsItemIntrofilesItem {
#[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#ReturnsLessonsItemIntrofiles = Vec<ReturnsLessonsItemIntrofilesItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsLessonsItemMediafilesItem {
#[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#ReturnsLessonsItemMediafiles = Vec<ReturnsLessonsItemMediafilesItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsLessonsItem {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "course")]
pub r#course: Option<i64>,
#[serde(rename = "coursemodule")]
pub r#coursemodule: Option<i64>,
#[serde(rename = "name")]
pub r#name: Option<String>,
#[serde(rename = "intro")]
pub r#intro: Option<String>,
#[serde(rename = "introformat")]
pub r#introformat: Option<i64>,
#[serde(rename = "lang")]
pub r#lang: Option<String>,
#[serde(rename = "practice")]
pub r#practice: Option<bool>,
#[serde(rename = "modattempts")]
pub r#modattempts: Option<bool>,
#[serde(rename = "usepassword")]
pub r#usepassword: Option<bool>,
#[serde(rename = "password")]
pub r#password: Option<String>,
#[serde(rename = "dependency")]
pub r#dependency: Option<i64>,
#[serde(rename = "conditions")]
pub r#conditions: Option<String>,
#[serde(rename = "grade")]
pub r#grade: Option<i64>,
#[serde(rename = "custom")]
pub r#custom: Option<bool>,
#[serde(rename = "ongoing")]
pub r#ongoing: Option<bool>,
#[serde(rename = "usemaxgrade")]
pub r#usemaxgrade: Option<i64>,
#[serde(rename = "maxanswers")]
pub r#maxanswers: Option<i64>,
#[serde(rename = "maxattempts")]
pub r#maxattempts: Option<i64>,
#[serde(rename = "review")]
pub r#review: Option<bool>,
#[serde(rename = "nextpagedefault")]
pub r#nextpagedefault: Option<i64>,
#[serde(rename = "feedback")]
pub r#feedback: Option<bool>,
#[serde(rename = "minquestions")]
pub r#minquestions: Option<i64>,
#[serde(rename = "maxpages")]
pub r#maxpages: Option<i64>,
#[serde(rename = "timelimit")]
pub r#timelimit: Option<i64>,
#[serde(rename = "retake")]
pub r#retake: Option<bool>,
#[serde(rename = "activitylink")]
pub r#activitylink: Option<i64>,
#[serde(rename = "mediafile")]
pub r#mediafile: Option<String>,
#[serde(rename = "mediaheight")]
pub r#mediaheight: Option<i64>,
#[serde(rename = "mediawidth")]
pub r#mediawidth: Option<i64>,
#[serde(rename = "mediaclose")]
pub r#mediaclose: Option<i64>,
#[serde(rename = "slideshow")]
pub r#slideshow: Option<bool>,
#[serde(rename = "width")]
pub r#width: Option<i64>,
#[serde(rename = "height")]
pub r#height: Option<i64>,
#[serde(rename = "bgcolor")]
pub r#bgcolor: Option<String>,
#[serde(rename = "displayleft")]
pub r#displayleft: Option<bool>,
#[serde(rename = "displayleftif")]
pub r#displayleftif: Option<i64>,
#[serde(rename = "progressbar")]
pub r#progressbar: Option<bool>,
#[serde(rename = "available")]
pub r#available: Option<i64>,
#[serde(rename = "deadline")]
pub r#deadline: Option<i64>,
#[serde(rename = "timemodified")]
pub r#timemodified: Option<i64>,
#[serde(rename = "completionendreached")]
pub r#completionendreached: Option<i64>,
#[serde(rename = "completiontimespent")]
pub r#completiontimespent: Option<i64>,
#[serde(rename = "allowofflineattempts")]
pub r#allowofflineattempts: Option<bool>,
#[serde(rename = "introfiles")]
pub r#introfiles: Option<r#ReturnsLessonsItemIntrofiles>,
#[serde(rename = "mediafiles")]
pub r#mediafiles: Option<r#ReturnsLessonsItemMediafiles>,
}
pub type r#ReturnsLessons = Vec<ReturnsLessonsItem>;
#[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 = "lessons")]
pub r#lessons: Option<r#ReturnsLessons>,
#[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("mod_lesson_get_lessons_by_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("mod_lesson_get_lessons_by_courses", params)
.await
}