geekorm_core/queries/
query.rs1use std::fmt::Display;
3
4use crate::builder::models::QueryType;
5use crate::queries::QueryBuilder;
6use crate::{Table, builder::values::Values};
7
8#[derive(Debug, Clone, Default)]
10pub struct Query {
11 pub query_type: QueryType,
13 pub query: String,
15 pub values: Values,
17 pub parameters: Values,
19
20 pub columns: Vec<String>,
22
23 pub(crate) table: Table,
24}
25
26impl Query {
27 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 pub fn init() -> QueryBuilder {
48 QueryBuilder::default()
49 }
50
51 pub fn batch(statement: impl Into<String>) -> Self {
53 Query::new(
54 QueryType::Batch,
55 statement.into(),
56 Values::default(),
57 Values::default(),
58 vec![],
59 Table::default(),
60 )
61 }
62
63 pub fn to_str(&self) -> &str {
65 &self.query
66 }
67}
68
69impl Display for Query {
70 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
71 write!(f, "{}", self.query)
72 }
73}