geekorm_core/queries/query.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
/// The Query struct to hold the query and values to use
use std::fmt::Display;
use crate::builder::models::QueryType;
use crate::queries::QueryBuilder;
use crate::{builder::values::Values, Table};
/// The built Query struct with the query and values to use
#[derive(Debug, Clone, Default)]
pub struct Query {
/// The type of query (select, insert, update, delete)
pub query_type: QueryType,
/// The resulting SQLite Query
pub query: String,
/// The values to use in the query (where / insert / update)
pub values: Values,
/// List of parameters for the query (update / insert)
pub parameters: Values,
/// The output columns for the query (used in raw queries)
pub columns: Vec<String>,
pub(crate) table: Table,
}
impl Query {
/// Create a new Query
pub fn new(
query_type: QueryType,
query: String,
values: Values,
parameters: Values,
columns: Vec<String>,
table: Table,
) -> Self {
Query {
query_type,
query,
values,
parameters,
columns,
table,
}
}
/// Initialize using the QueryBuilder struct
pub fn init() -> QueryBuilder {
QueryBuilder::default()
}
/// Get the query as a &str
pub fn to_str(&self) -> &str {
&self.query
}
}
impl Display for Query {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.query)
}
}