cdbc_sqlite/
lib.rs

1//! **SQLite** database driver.
2
3// SQLite is a C library. All interactions require FFI which is unsafe.
4// All unsafe blocks should have comments pointing to SQLite docs and ensuring that we maintain
5// invariants.
6#![allow(unsafe_code)]
7
8
9#[macro_use]
10pub extern crate cdbc;
11
12
13use cdbc::executor::Executor;
14
15mod arguments;
16mod column;
17mod connection;
18mod database;
19mod error;
20mod options;
21mod query_result;
22mod row;
23mod statement;
24mod transaction;
25mod type_info;
26pub mod types;
27mod value;
28
29
30pub use arguments::{SqliteArgumentValue, SqliteArguments};
31pub use column::SqliteColumn;
32pub use connection::SqliteConnection;
33pub use database::Sqlite;
34pub use error::SqliteError;
35pub use options::{
36    SqliteAutoVacuum, SqliteConnectOptions, SqliteJournalMode, SqliteLockingMode, SqliteSynchronous,
37};
38pub use query_result::SqliteQueryResult;
39pub use row::SqliteRow;
40pub use statement::SqliteStatement;
41pub use transaction::SqliteTransactionManager;
42pub use type_info::SqliteTypeInfo;
43pub use value::{SqliteValue, SqliteValueRef};
44
45/// An alias for [`Pool`][crate::pool::Pool], specialized for SQLite.
46pub type SqlitePool = cdbc::pool::Pool<Sqlite>;
47
48/// An alias for [`PoolOptions`][crate::pool::PoolOptions], specialized for SQLite.
49pub type SqlitePoolOptions = cdbc::pool::PoolOptions<Sqlite>;
50
51/// An alias for [`Executor<'_, Database = Sqlite>`][Executor].
52pub trait SqliteExecutor<'c>: Executor< Database = Sqlite> {}
53impl<'c, T: Executor<Database = Sqlite>> SqliteExecutor<'c> for T {}
54
55// NOTE: required due to the lack of lazy normalization
56impl_into_arguments_for_arguments!(SqliteArguments<'q>);
57impl_column_index_for_row!(SqliteRow);
58impl_column_index_for_statement!(SqliteStatement);
59impl_into_maybe_pool!(Sqlite, SqliteConnection);