mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-26 11:31:37 +08:00
Merge pull request #35 from marcusklaas/as-path
Change path parameter type to &AsRef<Path>
This commit is contained in:
commit
98e7994251
@ -20,6 +20,9 @@ time = "~0.1.0"
|
|||||||
bitflags = "~0.1"
|
bitflags = "~0.1"
|
||||||
libc = "~0.1"
|
libc = "~0.1"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tempdir = "~0.3.4"
|
||||||
|
|
||||||
[dependencies.libsqlite3-sys]
|
[dependencies.libsqlite3-sys]
|
||||||
path = "libsqlite3-sys"
|
path = "libsqlite3-sys"
|
||||||
version = "0.0.13"
|
version = "0.0.13"
|
||||||
|
33
src/lib.rs
33
src/lib.rs
@ -156,7 +156,7 @@ impl SqliteConnection {
|
|||||||
///
|
///
|
||||||
/// `SqliteConnection::open(path)` is equivalent to `SqliteConnection::open_with_flags(path,
|
/// `SqliteConnection::open(path)` is equivalent to `SqliteConnection::open_with_flags(path,
|
||||||
/// SQLITE_OPEN_READ_WRITE | SQLITE_OPEN_CREATE)`.
|
/// SQLITE_OPEN_READ_WRITE | SQLITE_OPEN_CREATE)`.
|
||||||
pub fn open(path: &Path) -> SqliteResult<SqliteConnection> {
|
pub fn open<P: AsRef<Path>>(path: &P) -> SqliteResult<SqliteConnection> {
|
||||||
let flags = SQLITE_OPEN_READ_WRITE | SQLITE_OPEN_CREATE;
|
let flags = SQLITE_OPEN_READ_WRITE | SQLITE_OPEN_CREATE;
|
||||||
SqliteConnection::open_with_flags(path, flags)
|
SqliteConnection::open_with_flags(path, flags)
|
||||||
}
|
}
|
||||||
@ -171,9 +171,9 @@ impl SqliteConnection {
|
|||||||
///
|
///
|
||||||
/// Database Connection](http://www.sqlite.org/c3ref/open.html) for a description of valid
|
/// Database Connection](http://www.sqlite.org/c3ref/open.html) for a description of valid
|
||||||
/// flag combinations.
|
/// flag combinations.
|
||||||
pub fn open_with_flags(path: &Path, flags: SqliteOpenFlags)
|
pub fn open_with_flags<P: AsRef<Path>>(path: &P, flags: SqliteOpenFlags)
|
||||||
-> SqliteResult<SqliteConnection> {
|
-> SqliteResult<SqliteConnection> {
|
||||||
let c_path = try!(path_to_cstring(path));
|
let c_path = try!(path_to_cstring(path.as_ref()));
|
||||||
InnerSqliteConnection::open_with_flags(&c_path, flags).map(|db| {
|
InnerSqliteConnection::open_with_flags(&c_path, flags).map(|db| {
|
||||||
SqliteConnection{ db: RefCell::new(db) }
|
SqliteConnection{ db: RefCell::new(db) }
|
||||||
})
|
})
|
||||||
@ -397,7 +397,7 @@ impl SqliteConnection {
|
|||||||
/// conn.load_extension(Path::new("my_sqlite_extension"), None)
|
/// conn.load_extension(Path::new("my_sqlite_extension"), None)
|
||||||
/// }
|
/// }
|
||||||
#[cfg(feature = "load_extension")]
|
#[cfg(feature = "load_extension")]
|
||||||
pub fn load_extension(&self, dylib_path: &Path, entry_point: Option<&str>) -> SqliteResult<()> {
|
pub fn load_extension<P: AsRef<Path>>(&self, dylib_path: &P, entry_point: Option<&str>) -> SqliteResult<()> {
|
||||||
self.db.borrow_mut().load_extension(dylib_path, entry_point)
|
self.db.borrow_mut().load_extension(dylib_path, entry_point)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -815,7 +815,9 @@ impl<'stmt> SqliteRow<'stmt> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
extern crate libsqlite3_sys as ffi;
|
extern crate libsqlite3_sys as ffi;
|
||||||
|
extern crate tempdir;
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use self::tempdir::TempDir;
|
||||||
|
|
||||||
// this function is never called, but is still type checked; in
|
// this function is never called, but is still type checked; in
|
||||||
// particular, calls with specific instantiations will require
|
// particular, calls with specific instantiations will require
|
||||||
@ -829,6 +831,29 @@ mod test {
|
|||||||
SqliteConnection::open_in_memory().unwrap()
|
SqliteConnection::open_in_memory().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_persistence() {
|
||||||
|
let temp_dir = TempDir::new("test_open_file").unwrap();
|
||||||
|
let path = temp_dir.path().join("test.db3");
|
||||||
|
|
||||||
|
{
|
||||||
|
let db = SqliteConnection::open(&path).unwrap();
|
||||||
|
let sql = "BEGIN;
|
||||||
|
CREATE TABLE foo(x INTEGER);
|
||||||
|
INSERT INTO foo VALUES(42);
|
||||||
|
END;";
|
||||||
|
db.execute_batch(sql).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
let path_string = path.to_str().unwrap();
|
||||||
|
let db = SqliteConnection::open(&path_string).unwrap();
|
||||||
|
let the_answer = db.query_row_safe("SELECT x FROM foo",
|
||||||
|
&[],
|
||||||
|
|r| r.get::<i64>(0));
|
||||||
|
|
||||||
|
assert_eq!(42i64, the_answer.unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_open() {
|
fn test_open() {
|
||||||
assert!(SqliteConnection::open_in_memory().is_ok());
|
assert!(SqliteConnection::open_in_memory().is_ok());
|
||||||
|
Loading…
Reference in New Issue
Block a user