mithril_persistence/sqlite/
mod.rs1mod cleaner;
6mod condition;
7mod connection_builder;
8mod connection_extensions;
9mod connection_pool;
10mod cursor;
11mod entity;
12mod projection;
13mod query;
14mod source_alias;
15mod transaction;
16
17pub use cleaner::{SqliteCleaner, SqliteCleaningTask};
18pub use condition::{GetAllCondition, WhereCondition};
19pub use connection_builder::{ConnectionBuilder, ConnectionOptions};
20pub use connection_extensions::ConnectionExtensions;
21pub use connection_pool::{SqliteConnectionPool, SqlitePooledConnection};
22pub use cursor::EntityCursor;
23pub use entity::{HydrationError, SqLiteEntity};
24pub use projection::{Projection, ProjectionField};
25pub use query::Query;
26pub use source_alias::SourceAlias;
27pub use transaction::Transaction;
28
29pub type SqliteConnection = sqlite::ConnectionThreadSafe;
31
32pub mod error {
34 pub type SqliteError = sqlite::Error;
36
37 pub const SQLITE_BUSY: isize = 5;
41}
42
43#[cfg(test)]
44mod test {
45 use sqlite::Connection;
46
47 #[test]
48 fn sqlite_version_should_be_3_42_or_more() {
49 let connection = Connection::open_thread_safe(":memory:").unwrap();
50 let mut statement = connection.prepare("select sqlite_version()").unwrap();
51 let cursor = statement.iter().next().unwrap().unwrap();
52 let db_version = cursor.read::<&str, _>(0);
53 let version = semver::Version::parse(db_version)
54 .expect("Sqlite version should be parsable to semver");
55 let requirement = semver::VersionReq::parse(">=3.42.0").unwrap();
56
57 assert!(
58 requirement.matches(&version),
59 "Sqlite version {} is lower than 3.42.0",
60 version
61 )
62 }
63}