From acdbafe21daebc41fda9fa35e59f36a99a6bf9a2 Mon Sep 17 00:00:00 2001 From: Halimat Date: Sat, 30 May 2026 19:46:02 +0100 Subject: [PATCH] feat: add get_all_milestones view function --- campaign/src/get_all_milestones.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 campaign/src/get_all_milestones.rs 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 +}