use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use super::Provider;
use crate::SessionSummary;
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListSessionsArgs {
#[serde(default)]
pub limit: Option<usize>,
#[serde(default)]
pub cursor: Option<String>,
pub provider: Option<Provider>,
pub project_root: Option<String>,
pub project_hash: Option<String>,
pub since: Option<String>,
pub until: Option<String>,
#[serde(default)]
pub include_children: Option<bool>,
}
#[derive(Debug, Serialize)]
pub struct ListSessionsViewModel {
pub sessions: Vec<SessionSummary>,
pub total_in_page: usize,
pub next_cursor: Option<String>,
}
impl ListSessionsViewModel {
pub fn new(sessions: Vec<SessionSummary>, next_cursor: Option<String>) -> Self {
let total_in_page = sessions.len();
Self {
sessions,
total_in_page,
next_cursor,
}
}
}