diff --git a/campaign/src/get_all_milestones.rs b/campaign/src/get_all_milestones.rs new file mode 100644 index 0000000..9e5714e --- /dev/null +++ b/campaign/src/get_all_milestones.rs @@ -0,0 +1,19 @@ +use soroban_sdk::{Env, Vec}; +use crate::types::MilestoneData; +use crate::storage::{get_campaign, get_milestone}; + +/// Issue #200 – `get_all_milestones` view function +/// +/// Returns all milestones in index order. +/// No authentication required. +/// Handles campaigns with 1–5 milestones. +pub fn get_all_milestones(env: &Env) -> Vec { + let campaign = get_campaign(env).expect("campaign not initialized"); + let mut milestones = Vec::new(env); + for i in 0..campaign.milestone_count { + if let Some(m) = get_milestone(env, i) { + milestones.push_back(m); + } + } + milestones +}