use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct CreateAssignmentParams {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub due_at: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unlock_at: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lock_at: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub points_possible: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub grading_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub submission_types: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub published: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assignment_group_id: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub position: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub omit_from_final_grade: Option<bool>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct UpdateAssignmentParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub due_at: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub points_possible: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub published: Option<bool>,
}