activitypub/src/database.rs

29 lines
759 B
Rust
Raw Normal View History

2024-04-09 19:55:07 +02:00
use crate::{error::Error, objects::person::DbUser};
2024-04-09 19:48:18 +02:00
use anyhow::anyhow;
2024-04-15 01:07:15 +02:00
use serde::{Deserialize, Serialize};
2024-04-09 19:48:18 +02:00
use std::sync::{Arc, Mutex};
pub type DatabaseHandle = Arc<Database>;
/// Our "database" which contains all known users (local and federated)
2024-04-15 01:07:15 +02:00
#[derive(Debug, Serialize, Deserialize)]
2024-04-09 19:48:18 +02:00
pub struct Database {
pub users: Mutex<Vec<DbUser>>,
}
impl Database {
pub fn local_user(&self) -> DbUser {
let lock = self.users.lock().unwrap();
lock.first().unwrap().clone()
}
pub fn read_user(&self, name: &str) -> Result<DbUser, Error> {
let db_user = self.local_user();
if name == db_user.name {
Ok(db_user)
} else {
Err(anyhow!("Invalid user {name}").into())
}
}
}