Skip to main content

rbdc_oracle/
query.rs

1use crate::{OracleArguments, OracleStatement};
2use either::Either;
3use rbdc::Error;
4
5#[derive(Debug, Clone)]
6pub struct OracleQuery {
7    pub statement: Either<String, OracleStatement>,
8    pub arguments: Vec<rbs::Value>,
9    pub persistent: bool,
10}
11
12impl OracleQuery {
13    #[inline]
14    pub fn sql(&self) -> &str {
15        match self.statement {
16            Either::Right(ref statement) => &statement.sql,
17            Either::Left(ref sql) => sql,
18        }
19    }
20
21    pub fn statement(&self) -> Option<&OracleStatement> {
22        match self.statement {
23            Either::Right(ref statement) => Some(statement),
24            Either::Left(_) => None,
25        }
26    }
27
28    #[inline]
29    pub fn take_arguments(self) -> Result<Option<OracleArguments>, Error> {
30        if self.arguments.is_empty() {
31            return Ok(None);
32        }
33        Ok(Some(OracleArguments::from_args(self.arguments)?))
34    }
35
36    #[inline]
37    pub fn persistent(&self) -> bool {
38        self.persistent
39    }
40}