rbdc_sqlite/statement/
mod.rs1use crate::{SqliteColumn, SqliteTypeInfo};
2use either::Either;
3use rbdc::ext::ustr::UStr;
4use std::collections::HashMap;
5use std::sync::Arc;
6
7mod handle;
8mod r#virtual;
9
10pub(crate) use handle::StatementHandle;
11pub(crate) use r#virtual::VirtualStatement;
12
13#[derive(Debug, Clone)]
14#[allow(clippy::rc_buffer)]
15pub struct SqliteStatement {
16 pub(crate) sql: String,
17 pub(crate) parameters: usize,
18 pub(crate) columns: Arc<Vec<SqliteColumn>>,
19 pub(crate) column_names: Arc<HashMap<UStr, usize>>,
20}
21
22impl SqliteStatement {
23 pub fn to_owned(&self) -> SqliteStatement {
24 SqliteStatement {
25 sql: self.sql.clone(),
26 parameters: self.parameters,
27 columns: Arc::clone(&self.columns),
28 column_names: Arc::clone(&self.column_names),
29 }
30 }
31
32 pub fn sql(&self) -> &str {
33 &self.sql
34 }
35
36 pub fn parameters(&self) -> Option<Either<&[SqliteTypeInfo], usize>> {
37 Some(Either::Right(self.parameters))
38 }
39
40 pub fn columns(&self) -> &[SqliteColumn] {
41 &self.columns
42 }
43}