46 releases (stable)
Uses new Rust 2024
| 4.0.0 | Mar 17, 2026 |
|---|---|
| 3.3.2 | Feb 6, 2026 |
| 3.3.1 | Jan 19, 2026 |
| 3.2.1 | Nov 17, 2025 |
| 0.1.4 | Dec 30, 2022 |
#832 in Database interfaces
645 downloads per month
Used in imessage-exporter
1MB
22K
SLoC
imessage-database
This library provides interfaces to interact with iMessage Databases.
Installation
This library is available on crates.io.
Documentation
Documentation is available on docs.rs.
Example
use imessage_database::{
error::table::TableError,
tables::{
messages::Message,
table::{get_connection, Table},
},
util::dirs::default_db_path,
};
fn iter_messages() -> Result<(), TableError> {
// Create a read-only connection to an iMessage database
let db = get_connection(&default_db_path()).unwrap();
// Iterate over a stream of messages
Message::stream(&db, |message_result| {
match message_result {
Ok(mut message) => {
// Deserialize the message body
if let Ok(body) = message.parse_body(&db) {
message.apply_body(body);
}
// Emit debug info for each message
println!("Message: {:#?}", message)
},
Err(e) => eprintln!("Error: {:?}", e),
};
// You can substitute your own closure error type
Ok::<(), TableError>(())
})?;
Ok(())
}
Dependencies
~35MB
~651K SLoC