moodle_api/enrol/meta/
add_instances.rs

1use serde::{self, Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug)]
4pub struct ParamsInstancesItem {
5    /// ID of the course where meta enrolment is added.
6    #[serde(rename = "metacourseid")]
7    pub r#metacourseid: Option<i64>,
8    /// ID of the course where meta enrolment is linked to.
9    #[serde(rename = "courseid")]
10    pub r#courseid: Option<String>,
11    /// Creates group in meta course named after linked course and puts all enrolled users in this group
12    #[serde(rename = "creategroup")]
13    pub r#creategroup: Option<bool>,
14}
15
16/// List of course meta enrolment instances to create.
17pub type r#ParamsInstances = Vec<ParamsInstancesItem>;
18
19#[derive(Serialize, Deserialize, Debug)]
20pub struct Params {
21    /// List of course meta enrolment instances to create.
22    #[serde(rename = "instances")]
23    pub r#instances: Option<r#ParamsInstances>,
24}
25
26#[derive(Serialize, Deserialize, Debug)]
27pub struct ReturnsItem {
28    /// ID of the course where meta enrolment is added.
29    #[serde(rename = "metacourseid")]
30    pub r#metacourseid: Option<i64>,
31    /// ID of the course where meta enrolment is linked to.
32    #[serde(rename = "courseid")]
33    pub r#courseid: Option<String>,
34    /// True on success, false if link already exists.
35    #[serde(rename = "status")]
36    pub r#status: Option<bool>,
37}
38
39/// List of course meta enrolment instances that were created.
40pub type r#Returns = Vec<ReturnsItem>;
41
42pub async fn call<'a>(
43    client: &'a mut moodle_client::MoodleClient,
44    params: &'a mut Params,
45) -> anyhow::Result<Returns> {
46    let json = client.post("enrol_meta_add_instances", params).await?;
47
48    serde_json::from_value(json).map_err(|e| e.into())
49}
50
51pub async fn call_raw<'a>(
52    client: &'a mut moodle_client::MoodleClient,
53    params: &'a mut Params,
54) -> anyhow::Result<serde_json::Value> {
55    client.post("enrol_meta_add_instances", params).await
56}