use crate::args::common::ListMode;
use clap::{Args, Subcommand};
use iggy::prelude::Identifier;
#[derive(Debug, Clone, Subcommand)]
pub(crate) enum StreamAction {
#[clap(verbatim_doc_comment, visible_alias = "c")]
Create(StreamCreateArgs),
#[clap(verbatim_doc_comment, visible_alias = "d")]
Delete(StreamDeleteArgs),
#[clap(verbatim_doc_comment, visible_alias = "u")]
Update(StreamUpdateArgs),
#[clap(verbatim_doc_comment, visible_alias = "g")]
Get(StreamGetArgs),
#[clap(verbatim_doc_comment, visible_alias = "l")]
List(StreamListArgs),
#[clap(verbatim_doc_comment, visible_alias = "p")]
Purge(StreamPurgeArgs),
}
#[derive(Debug, Clone, Args)]
pub(crate) struct StreamCreateArgs {
#[clap(short, long)]
pub(crate) stream_id: Option<u32>,
pub(crate) name: String,
}
#[derive(Debug, Clone, Args)]
pub(crate) struct StreamDeleteArgs {
pub(crate) stream_id: Identifier,
}
#[derive(Debug, Clone, Args)]
pub(crate) struct StreamUpdateArgs {
pub(crate) stream_id: Identifier,
pub(crate) name: String,
}
#[derive(Debug, Clone, Args)]
pub(crate) struct StreamGetArgs {
pub(crate) stream_id: Identifier,
}
#[derive(Debug, Clone, Args)]
pub(crate) struct StreamListArgs {
#[clap(short, long, value_enum, default_value_t = ListMode::Table)]
pub(crate) list_mode: ListMode,
}
#[derive(Debug, Clone, Args)]
pub(crate) struct StreamPurgeArgs {
pub(crate) stream_id: Identifier,
}