Skip to main content

made_core/ports/
agentic_system_page.rs

1use crate::entities::AgenticSystem;
2use crate::value_objects::AgenticSystemId;
3
4/// One page of the design catalogue, in identifier order.
5#[derive(Debug, Clone, Default, PartialEq, Eq)]
6pub struct AgenticSystemPage {
7    systems: Vec<AgenticSystem>,
8    next_cursor: Option<AgenticSystemId>,
9}
10
11impl AgenticSystemPage {
12    #[must_use]
13    pub const fn new(systems: Vec<AgenticSystem>, next_cursor: Option<AgenticSystemId>) -> Self {
14        Self {
15            systems,
16            next_cursor,
17        }
18    }
19
20    #[must_use]
21    pub fn systems(&self) -> &[AgenticSystem] {
22        &self.systems
23    }
24
25    #[must_use]
26    pub fn into_systems(self) -> Vec<AgenticSystem> {
27        self.systems
28    }
29
30    /// Where to continue, when there is more.
31    #[must_use]
32    pub const fn next_cursor(&self) -> Option<&AgenticSystemId> {
33        self.next_cursor.as_ref()
34    }
35}