1#![allow(unsafe_code)]
7
8pub use arguments::{SqliteArgumentValue, SqliteArguments};
9pub use column::SqliteColumn;
10pub use connection::{LockedSqliteHandle, SqliteConnection};
11pub use database::Sqlite;
12pub use error::SqliteError;
13pub use options::{
14 SqliteAutoVacuum, SqliteConnectOptions, SqliteJournalMode, SqliteLockingMode, SqliteSynchronous,
15};
16pub use query_result::SqliteQueryResult;
17pub use row::SqliteRow;
18pub use statement::SqliteStatement;
19use std::sync::atomic::AtomicBool;
20pub use transaction::SqliteTransactionManager;
21pub use type_info::SqliteTypeInfo;
22pub use value::{SqliteValue, SqliteValueRef};
23
24use crate::describe::Describe;
25use crate::error::Error;
26use crate::executor::Executor;
27use crate::sqlite::connection::establish::EstablishParams;
28
29mod arguments;
30mod column;
31mod connection;
32mod database;
33mod error;
34mod options;
35mod query_result;
36mod row;
37mod statement;
38mod transaction;
39mod type_info;
40pub mod types;
41mod value;
42
43#[cfg(feature = "migrate")]
44mod migrate;
45
46#[cfg(feature = "migrate")]
47mod testing;
48
49pub type SqlitePool = crate::pool::Pool<Sqlite>;
51
52pub type SqlitePoolOptions = crate::pool::PoolOptions<Sqlite>;
54
55pub trait SqliteExecutor<'c>: Executor<'c, Database = Sqlite> {}
57impl<'c, T: Executor<'c, Database = Sqlite>> SqliteExecutor<'c> for T {}
58
59impl_into_arguments_for_arguments!(SqliteArguments<'q>);
61impl_executor_for_pool_connection!(Sqlite, SqliteConnection, SqliteRow);
62impl_executor_for_transaction!(Sqlite, SqliteRow);
63impl_column_index_for_row!(SqliteRow);
64impl_column_index_for_statement!(SqliteStatement);
65impl_acquire!(Sqlite, SqliteConnection);
66impl_into_maybe_pool!(Sqlite, SqliteConnection);
67
68impl_encode_for_option!(Sqlite);
70
71#[doc(hidden)]
73pub static CREATE_DB_WAL: AtomicBool = AtomicBool::new(true);
74
75#[doc(hidden)]
77pub fn describe_blocking(
78 opts: &SqliteConnectOptions,
79 query: &str,
80) -> Result<Describe<Sqlite>, Error> {
81 let params = EstablishParams::from_options(opts)?;
82 let mut conn = params.establish()?;
83
84 connection::execute::iter(&mut conn, &opts.pragma_string(), None, false)?.finish()?;
86
87 connection::describe::describe(&mut conn, query)
88
89 }