use crate::sprint::SprintId;
mod capacity;
mod lifecycle;
pub use capacity::{list_sprints, set_sprint_capacity, sprint_capacity, sprint_load_warnings};
pub(crate) use lifecycle::validate_sprint_assignment;
pub use lifecycle::{
assign_sprint, assign_sprint_by_status, assign_sprint_raw, close_sprint, create_sprint,
delete_sprint, edit_sprint, start_sprint, unassign_sprint,
};
#[cfg(test)]
use capacity::sprint_load_warnings_for;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SprintLoadWarningKind {
Capacity,
Velocity,
}
impl SprintLoadWarningKind {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::Capacity => "capacity",
Self::Velocity => "velocity",
}
}
#[must_use]
pub const fn unit(self) -> &'static str {
match self {
Self::Capacity => "hours",
Self::Velocity => "points",
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct SprintLoadWarning {
pub kind: SprintLoadWarningKind,
pub points: u32,
pub threshold: f64,
}
#[derive(Debug, Default, Clone, PartialEq, Eq)]
pub enum SprintCloseAction {
#[default]
Retain,
Rollover(SprintId),
Release,
}
#[cfg(test)]
mod tests;