use mysql::prelude::Queryable;
use query_builder::QueryBuilder;
use sql::get_conn;
pub use params::date_query::DateColumn;
pub use params::date_query::DateQuery;
pub use params::date_query::DateQueryAfterBefore;
pub use params::meta_query::MetaQuery;
pub use params::meta_query::MetaRelation;
pub use params::orderby::WpOrderBy;
pub use params::param_builder::ParamBuilder;
pub use params::post_type::PostType;
pub use params::tax_query::TaxField;
pub use params::tax_query::TaxQuery;
pub use params::tax_query::TaxRelation;
pub use params::traits::*;
pub use params::Params;
pub use sql::env_vars::EnvVars;
pub use sql::traits::Insertable;
pub use sql::SqlOrder;
pub use sql::SqlSearchOperators;
pub use wp_post::add_post_meta;
pub use wp_post::get_post_meta;
pub use wp_post::post_status::PostStatus;
use wp_post::WpPost;
pub use wp_user::WpUser;
#[allow(non_camel_case_types)]
pub type WP_Post = WpPost;
#[allow(non_camel_case_types)]
pub type WP_Query = WpQuery;
mod params;
mod query_builder;
mod sql;
mod wp_comment;
pub mod wp_post;
mod wp_user;
#[derive(Debug)]
pub struct WpQuery {
pub posts: Vec<WpPost>,
}
impl WpQuery {
pub fn new<'a, T>(params: T) -> Result<Self, mysql::Error>
where
T: Into<Params<'a>>,
{
let mut conn = get_conn()?;
let posts: Vec<WpPost> = Self::query(&mut conn, params)?;
Ok(Self { posts })
}
pub fn with_connection<'a, T>(
conn: &mut impl Queryable,
params: T,
) -> Result<Self, mysql::Error>
where
T: Into<Params<'a>>,
{
let posts: Vec<WpPost> = Self::query(conn, params)?;
Ok(Self { posts })
}
fn query<'a, T>(conn: &mut impl Queryable, params: T) -> Result<Vec<WpPost>, mysql::Error>
where
T: Into<Params<'a>>,
{
let query_builder::QueryAndValues(q, values) = QueryBuilder::new(params.into()).query();
let stmt = conn.prep(q)?;
conn.exec(stmt, values)
}
pub fn post_count(&self) -> usize {
self.posts.len()
}
fn _max_num_pages(&self) -> usize {
0
}
pub fn to_vec(self) -> Vec<WpPost> {
self.posts
}
}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
}
}