geekorm_core/queries/
query.rs

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