#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct CreatePositionParams {
pub position_name: String,
pub description: Option<String>,
pub parent_position_id: Option<String>,
}
impl CreatePositionParams {
pub fn new(position_name: impl Into<String>) -> Self {
Self {
position_name: position_name.into(),
description: None,
parent_position_id: None,
}
}
pub fn with_description(mut self, description: impl Into<String>) -> Self {
self.description = Some(description.into());
self
}
pub fn with_parent_position_id(mut self, parent_position_id: impl Into<String>) -> Self {
self.parent_position_id = Some(parent_position_id.into());
self
}
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct UpdatePositionParams {
pub position_id: String,
pub position_name: String,
pub description: Option<String>,
}
impl UpdatePositionParams {
pub fn new(position_id: impl Into<String>, position_name: impl Into<String>) -> Self {
Self {
position_id: position_id.into(),
position_name: position_name.into(),
description: None,
}
}
pub fn with_description(mut self, description: impl Into<String>) -> Self {
self.description = Some(description.into());
self
}
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct DeletePositionParams {
pub position_id: String,
}
impl DeletePositionParams {
pub fn new(position_id: impl Into<String>) -> Self {
Self {
position_id: position_id.into(),
}
}
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct SetPositionTimeZoneParams {
pub position_id: String,
pub time_zone: Option<String>,
}
impl SetPositionTimeZoneParams {
pub fn new(position_id: impl Into<String>) -> Self {
Self {
position_id: position_id.into(),
time_zone: None,
}
}
pub fn with_time_zone(mut self, time_zone: impl Into<String>) -> Self {
self.time_zone = Some(time_zone.into());
self
}
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct ListPositionsParams {
pub parent_position_id: Option<String>,
pub page_num: u32,
pub page_size: u32,
}
impl Default for ListPositionsParams {
fn default() -> Self {
Self {
parent_position_id: None,
page_num: 1,
page_size: 30,
}
}
}
impl ListPositionsParams {
pub fn with_parent_position_id(mut self, parent_position_id: impl Into<String>) -> Self {
self.parent_position_id = Some(parent_position_id.into());
self
}
pub fn with_page_num(mut self, page_num: u32) -> Self {
self.page_num = page_num;
self
}
pub fn with_page_size(mut self, page_size: u32) -> Self {
self.page_size = page_size;
self
}
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct PositionDetailParams {
pub position_ids: Vec<String>,
}
impl PositionDetailParams {
pub fn new(position_ids: impl Into<Vec<String>>) -> Self {
Self {
position_ids: position_ids.into(),
}
}
}