use anyhow::anyhow;
use thiserror::Error;
use crate::app::app::App;
use crate::cli::utils::collection::FindElementError::{CollectionNotFound, RequestNotFound};
use crate::models::collection::Collection;
#[derive(Error, Debug)]
pub enum FindElementError {
#[error("Collection not found")]
CollectionNotFound,
#[error("Request not found")]
RequestNotFound,
}
impl App<'_> {
pub fn find_collection(&mut self, collection_name: &str) -> anyhow::Result<usize> {
for (index, collection) in self.collections.iter().enumerate() {
if collection.name == collection_name {
return Ok(index);
}
}
return Err(anyhow!(CollectionNotFound));
}
#[allow(dead_code)]
pub fn find_request(&mut self, collection: &Collection, request_name: &str) -> anyhow::Result<usize> {
for (index, request) in collection.requests.iter().enumerate() {
if request.read().name == request_name {
return Ok(index);
}
}
return Err(anyhow!(RequestNotFound));
}
pub fn find_collection_slash_request(&mut self, collection_name: &str, request_name: &str) -> anyhow::Result<(usize, usize)> {
for (collection_index, collection) in self.collections.iter().enumerate() {
if collection.name != collection_name {
continue;
}
for (request_index, request) in collection.requests.iter().enumerate() {
if request.read().name == request_name {
return Ok((collection_index, request_index));
}
}
return Err(anyhow!(RequestNotFound));
}
return Err(anyhow!(CollectionNotFound));
}
}