Skip to main content

dbx_core/engine/
query_builder_api.rs

1// Query Builder API implementation for Database
2
3use crate::engine::Database;
4use crate::engine::query_builder::QueryBuilder;
5
6impl Database {
7    /// Create a new QueryBuilder for building SQL queries
8    ///
9    /// This method returns a QueryBuilder that allows you to construct
10    /// SQL queries using a fluent API without writing raw SQL strings.
11    ///
12    /// # Example
13    ///
14    /// ```rust
15    /// use dbx_core::Database;
16    /// use arrow::datatypes::{DataType, Field, Schema};
17    ///
18    /// # fn main() -> dbx_core::DbxResult<()> {
19    /// let db = Database::open_in_memory()?;
20    ///
21    /// // Create a table first
22    /// let schema = Schema::new(vec![
23    ///     Field::new("id", DataType::Int64, false),
24    ///     Field::new("name", DataType::Utf8, true),
25    ///     Field::new("age", DataType::Int32, true),
26    /// ]);
27    /// db.create_table("users", schema)?;
28    ///
29    /// // Query using the builder
30    /// let results = db.query_builder()
31    ///     .select(&["id", "name"])
32    ///     .from("users")
33    ///     .where_("age", ">", "18")
34    ///     .order_by("name", "ASC")
35    ///     .limit(10)
36    ///     .execute()?;
37    /// # Ok(())
38    /// # }
39    /// ```
40    pub fn query_builder(&self) -> QueryBuilder<'_> {
41        QueryBuilder::new(self)
42    }
43}