winbrew_app\operations/
search.rs1use crate::catalog;
7use crate::database;
8use crate::models::domains::catalog::CatalogPackage;
9use anyhow::Error;
10
11#[derive(Debug)]
12pub enum SearchError {
13 CatalogUnavailable,
14 Unexpected(Error),
15}
16
17pub type SearchResult<T> = std::result::Result<T, SearchError>;
18
19pub fn search_packages(query: &str) -> SearchResult<Vec<CatalogPackage>> {
20 match catalog::search_packages(query) {
21 Ok(packages) => Ok(packages),
22 Err(err)
23 if err
24 .downcast_ref::<database::CatalogNotFoundError>()
25 .is_some() =>
26 {
27 Err(SearchError::CatalogUnavailable)
28 }
29 Err(err) => Err(SearchError::Unexpected(err)),
30 }
31}