From 1f4f6e9d70aac12601512463da72048c186d64cf Mon Sep 17 00:00:00 2001 From: Ivan Ukhov Date: Fri, 29 May 2015 16:58:48 -0400 Subject: [PATCH] Delegate the creation of statements to the statement module --- src/database.rs | 8 ++------ src/statement.rs | 11 ++++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/database.rs b/src/database.rs index c77471e..ae8b48f 100644 --- a/src/database.rs +++ b/src/database.rs @@ -48,13 +48,9 @@ impl<'l> Database<'l> { } /// Create a prepared statement. + #[inline] pub fn statement(&mut self, sql: &str) -> Result> { - let mut raw = 0 as *mut _; - unsafe { - success!(self, raw::sqlite3_prepare(self.raw, str_to_c_str!(sql), -1, &mut raw, - 0 as *mut _)); - } - Ok(::statement::from_raw(raw)) + ::statement::new(self, sql) } } diff --git a/src/statement.rs b/src/statement.rs index ee30a86..65f8fb6 100644 --- a/src/statement.rs +++ b/src/statement.rs @@ -2,7 +2,7 @@ use libc::{c_double, c_int}; use raw; use std::marker::PhantomData; -use {Result, ResultCode}; +use {Database, Result, ResultCode}; /// A prepared statement. pub struct Statement<'l> { @@ -101,6 +101,11 @@ impl Value for String { } #[inline] -pub fn from_raw<'l>(raw: *mut raw::sqlite3_stmt) -> Statement<'l> { - Statement { raw: raw, _phantom: PhantomData } +pub fn new<'l>(database: &mut Database<'l>, sql: &str) -> Result> { + let mut raw = 0 as *mut _; + unsafe { + success!(database, raw::sqlite3_prepare(::database::as_raw(database), str_to_c_str!(sql), + -1, &mut raw, 0 as *mut _)); + } + Ok(Statement { raw: raw, _phantom: PhantomData }) }