use clap::{Subcommand, ValueEnum};
use color_eyre::eyre::Result;
use polyte_gamma::Gamma;
use crate::commands::gamma::SortOrder;
#[derive(Debug, Clone, Copy, ValueEnum, Default)]
pub enum SeriesStatus {
#[default]
Open,
Closed,
}
#[derive(Subcommand)]
pub enum SeriesCommand {
List {
#[arg(short, long, default_value = "20")]
limit: u32,
#[arg(short, long, default_value = "0")]
offset: u32,
#[arg(long, value_enum, default_value = "desc")]
sort: SortOrder,
#[arg(long, value_enum, default_value = "open")]
status: SeriesStatus,
},
Get {
id: String,
},
}
impl SeriesCommand {
pub async fn run(self, gamma: &Gamma) -> Result<()> {
match self {
Self::List {
limit,
offset,
sort,
status,
} => {
let request = gamma
.series()
.list()
.limit(limit)
.offset(offset)
.ascending(matches!(sort, SortOrder::Asc))
.closed(matches!(status, SeriesStatus::Closed));
let series = request.send().await?;
println!("{}", serde_json::to_string_pretty(&series)?);
}
Self::Get { id } => {
let series = gamma.series().get(&id).send().await?;
println!("{}", serde_json::to_string_pretty(&series)?);
}
}
Ok(())
}
}