use clap::Subcommand;
use crate::cli::args::{PagedArgs, SymbolArgs};
use crate::cli::dispatch::{run_by_symbol, run_paged};
use crate::cli::help;
use crate::cli::output::CommandPayload;
use crate::client::FmpClient;
use crate::endpoint;
use crate::error::Result;
#[derive(Debug, Subcommand)]
pub(crate) enum Cmd {
#[command(
about = help::INSIDER_TRADING_LATEST_ABOUT,
long_about = help::INSIDER_TRADING_LATEST_LONG
)]
Latest(PagedArgs),
#[command(
about = help::INSIDER_TRADING_SEARCH_ABOUT,
long_about = help::INSIDER_TRADING_SEARCH_LONG
)]
Search(SymbolArgs),
}
pub(crate) async fn dispatch(client: &FmpClient, cmd: &Cmd) -> Result<CommandPayload> {
match cmd {
Cmd::Latest(args) => {
run_paged(
client,
endpoint::INSIDER_TRADING_LATEST,
args.page,
args.limit,
)
.await
}
Cmd::Search(args) => {
run_by_symbol(client, endpoint::INSIDER_TRADING_SEARCH, &args.symbol).await
}
}
}