2024-03-20 00:03:07 -04:00
|
|
|
use std::{collections::BTreeMap, error::Error};
|
2022-10-05 15:33:57 +02:00
|
|
|
|
|
|
|
use async_trait::async_trait;
|
2022-10-05 20:34:31 +02:00
|
|
|
use ruma::{
|
|
|
|
api::federation::discovery::{ServerSigningKeys, VerifyKey},
|
|
|
|
signatures::Ed25519KeyPair,
|
2022-10-09 17:26:53 +02:00
|
|
|
DeviceId, OwnedServerSigningKeyId, ServerName, UserId,
|
2022-10-05 20:34:31 +02:00
|
|
|
};
|
2022-09-07 13:25:51 +02:00
|
|
|
|
2024-04-06 01:24:08 -07:00
|
|
|
use crate::{database::Cork, Result};
|
2022-09-07 13:25:51 +02:00
|
|
|
|
2022-10-05 15:33:57 +02:00
|
|
|
#[async_trait]
|
2024-05-09 15:59:08 -07:00
|
|
|
pub trait Data: Send + Sync {
|
2022-10-05 15:33:57 +02:00
|
|
|
fn next_count(&self) -> Result<u64>;
|
|
|
|
fn current_count(&self) -> Result<u64>;
|
2023-07-29 20:01:38 +02:00
|
|
|
fn last_check_for_updates_id(&self) -> Result<u64>;
|
|
|
|
fn update_check_for_updates_id(&self, id: u64) -> Result<()>;
|
2024-03-14 00:15:21 -04:00
|
|
|
#[allow(unused_qualifications)] // async traits
|
2022-10-05 15:33:57 +02:00
|
|
|
async fn watch(&self, user_id: &UserId, device_id: &DeviceId) -> Result<()>;
|
|
|
|
fn cleanup(&self) -> Result<()>;
|
2024-04-22 23:54:56 -04:00
|
|
|
|
|
|
|
/// TODO: use this?
|
|
|
|
#[allow(dead_code)]
|
2024-03-06 18:14:30 -05:00
|
|
|
fn flush(&self) -> Result<()>;
|
2024-03-19 09:56:36 -07:00
|
|
|
fn cork(&self) -> Result<Cork>;
|
|
|
|
fn cork_and_flush(&self) -> Result<Cork>;
|
2024-04-22 23:54:56 -04:00
|
|
|
|
|
|
|
/// TODO: use this?
|
|
|
|
#[allow(dead_code)]
|
2024-03-19 09:56:36 -07:00
|
|
|
fn cork_and_sync(&self) -> Result<Cork>;
|
2023-07-03 19:37:54 +02:00
|
|
|
fn memory_usage(&self) -> String;
|
|
|
|
fn clear_caches(&self, amount: u32);
|
2022-09-07 13:25:51 +02:00
|
|
|
fn load_keypair(&self) -> Result<Ed25519KeyPair>;
|
|
|
|
fn remove_keypair(&self) -> Result<()>;
|
2022-10-05 15:33:57 +02:00
|
|
|
fn add_signing_key(
|
|
|
|
&self, origin: &ServerName, new_keys: ServerSigningKeys,
|
2022-10-09 17:25:06 +02:00
|
|
|
) -> Result<BTreeMap<OwnedServerSigningKeyId, VerifyKey>>;
|
2022-10-05 15:33:57 +02:00
|
|
|
|
|
|
|
/// This returns an empty `Ok(BTreeMap<..>)` when there are no keys found
|
|
|
|
/// for the server.
|
2022-10-09 17:25:06 +02:00
|
|
|
fn signing_keys_for(&self, origin: &ServerName) -> Result<BTreeMap<OwnedServerSigningKeyId, VerifyKey>>;
|
2022-10-05 15:33:57 +02:00
|
|
|
fn database_version(&self) -> Result<u64>;
|
|
|
|
fn bump_database_version(&self, new_version: u64) -> Result<()>;
|
2024-03-19 04:37:35 -07:00
|
|
|
fn backup(&self) -> Result<(), Box<dyn Error>> { unimplemented!() }
|
|
|
|
fn backup_list(&self) -> Result<String> { Ok(String::new()) }
|
2024-03-22 19:37:36 -07:00
|
|
|
fn file_list(&self) -> Result<String> { Ok(String::new()) }
|
2022-09-07 13:25:51 +02:00
|
|
|
}
|