pubmed_client/pubmed/query/mod.rs
1//! Query builder for constructing PubMed search queries with filters
2//!
3//! This module provides a flexible query builder for constructing complex PubMed search queries
4//! using E-utilities syntax. The query builder supports:
5//!
6//! - Field-specific searches (title, abstract, journal, etc.)
7//! - Date filtering with flexible precision
8//! - MeSH term filtering
9//! - Author and affiliation filtering
10//! - Boolean logic operations (AND, OR, NOT)
11//! - Article type and language filtering
12//! - Query validation and optimization
13//!
14//! # Examples
15//!
16//! Basic search:
17//! ```
18//! use pubmed_client::pubmed::SearchQuery;
19//!
20//! let query = SearchQuery::new()
21//! .query("covid-19 treatment")
22//! .published_after(2020)
23//! .free_full_text_only()
24//! .limit(10);
25//! ```
26//!
27//! Complex boolean search:
28//! ```
29//! use pubmed_client::pubmed::{SearchQuery, ArticleType, Language};
30//!
31//! let ai_query = SearchQuery::new()
32//! .title_contains("machine learning")
33//! .or(SearchQuery::new().mesh_term("Artificial Intelligence"));
34//!
35//! let medical_query = SearchQuery::new()
36//! .mesh_term("Medicine")
37//! .and(SearchQuery::new().human_studies_only());
38//!
39//! let final_query = ai_query
40//! .and(medical_query)
41//! .article_type(ArticleType::Review)
42//! .language(Language::English)
43//! .published_between(2020, Some(2023));
44//! ```
45
46// Core modules
47mod builder;
48mod date;
49mod filters;
50
51// Feature modules
52mod advanced;
53mod boolean;
54mod dates;
55mod search;
56mod validation;
57
58// Re-export all public types
59pub use builder::SearchQuery;
60pub use date::PubDate;
61pub use filters::{ArticleType, Language, SortOrder};