use std::collections::BTreeMap; use crate::Result; use ruma::{ api::client::backup::{BackupAlgorithm, KeyBackupData, RoomKeyBackup}, serde::Raw, OwnedRoomId, RoomId, UserId, }; pub trait Data: Send + Sync { fn create_backup( &self, user_id: &UserId, backup_metadata: &Raw, ) -> Result; fn delete_backup(&self, user_id: &UserId, version: &str) -> Result<()>; fn update_backup( &self, user_id: &UserId, version: &str, backup_metadata: &Raw, ) -> Result; fn get_latest_backup_version(&self, user_id: &UserId) -> Result>; fn get_latest_backup(&self, user_id: &UserId) -> Result)>>; fn get_backup(&self, user_id: &UserId, version: &str) -> Result>>; fn add_key( &self, user_id: &UserId, version: &str, room_id: &RoomId, session_id: &str, key_data: &Raw, ) -> Result<()>; fn count_keys(&self, user_id: &UserId, version: &str) -> Result; fn get_etag(&self, user_id: &UserId, version: &str) -> Result; fn get_all( &self, user_id: &UserId, version: &str, ) -> Result>; fn get_room( &self, user_id: &UserId, version: &str, room_id: &RoomId, ) -> Result>>; fn get_session( &self, user_id: &UserId, version: &str, room_id: &RoomId, session_id: &str, ) -> Result>>; fn delete_all_keys(&self, user_id: &UserId, version: &str) -> Result<()>; fn delete_room_keys(&self, user_id: &UserId, version: &str, room_id: &RoomId) -> Result<()>; fn delete_room_key( &self, user_id: &UserId, version: &str, room_id: &RoomId, session_id: &str, ) -> Result<()>; }