use std::collections::BTreeMap; use ruma::{api::client::backup::{BackupAlgorithm, RoomKeyBackup, KeyBackupData}, serde::Raw, UserId, RoomId}; use crate::Result; 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, RoomKeyBackup>>; 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<()>; }