Expand description
§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::{capabilities::Capabilities, messages::Message, table::get_connection},
util::{dirs::default_db_path, query_context::QueryContext},
};
fn iter_messages() -> Result<(), TableError> {
// Create a read-only connection to an iMessage database
let db = get_connection(&default_db_path().unwrap())?;
// Probe the schema and use the result to compose every message query
let capabilities = Capabilities::determine(&db)?;
let context = QueryContext::default();
// Prepare the message query and iterate over its rows
let mut statement = Message::stream_rows(&db, &capabilities, &context)?;
for message_result in Message::rows(&mut statement, [])? {
match message_result {
Ok(message) => {
println!("Text: {:?}", message.text);
println!("Body components: {:#?}", message.components);
println!("Edit history: {:#?}", message.edited_parts);
}
Err(e) => eprintln!("Error: {:?}", e),
}
}
Ok(())
}Re-exports§
Modules§
- error
- This module contains types of errors that can happen when parsing iMessage data.
- message_
types - iMessages can represent different kinds of data. This module defines types for those data.
- tables
- Representations of iMessage database tables as structs.
- util
- This module defines common utilities used across table queries.