Skip to content

api survey

Floris Bruynooghe edited this page Feb 12, 2021 · 4 revisions

API conventions

Rust API conventions in the deltachat-core-rust library.

Survey

A survey of existing APIs used to create the main objects. The APIs as shown are not actual signatures, but only approximations that allow to compare their behaviour without the full complexity.

Questions:

  • Any main types missing?
  • Any constructors missing?
Contact::add_or_lookup(context: &Context, name: &str, addr: &str);
//-> Result<(u32, Modifier)>
Contact::lookup_id_by_addr(context: &Context, addr: &str, min_origin: Origin);
// -> Result<Option<u32>>
Contact::load_from_db(context: &Context, contact_id: u32);
// -> Result<Self>
Contact::create(context: &Context, name: &str, addr: &str);
// -> Result<u32>
Contact::get_all(context: &Context, listflags: u32, query: &str);
// -> Result<Vec<u32>>
Contact::get_all_blocked(context: &Context);
// -> Vec<u32>

ChatId::new(id: u32);
// -> Self

Chat::load_from_db(context: &Context, chat_id: ChatId);
// -> Result<Self>
chat::create_by_contact_id(context: &Context, contact_id: u32);
// -> Result<ChatId>
chat::create_by_msg_id(context: &Context, msg_id: MsgId);
// -> Result<ChatId>
chat::create_group_chat(context: &Context, protect: ProtectionStatus, chat_name: &str);
// -> Result<ChatId>
chat::create_or_lookup_by_contact_id(context: &Context, contact_id: u32, create_blocked: Blocked);
//-> Result<(ChatId, Blocked)>
chat::lookup_by_contact_id(context: &Context, contact_id: u32);
// -> Result<(ChatId, Blocked)>

MsgId::new(id: u32);  // Also MsgId::new_unset()
// -> Self

Message::new(viewtype: ViewType);
// -> Self
Message::load_from_db(context: &Context, id: MsgId);
// -> Result<Message, Error>

BlobObject::create(context: &Context, suggested_name: &str, data: &[u8]);
// -> Result<Self, Error>
Clone this wiki locally