refactor!: add ws endpoint, storage trait

This commit is contained in:
2026-02-09 23:56:10 -08:00
parent c4e198de83
commit b614def39d
18 changed files with 383 additions and 117 deletions

38
registry/storage/mod.rs Normal file
View File

@@ -0,0 +1,38 @@
use crate::{
error::{Error, Result},
utils::Peer,
};
mod valkey;
pub use valkey::RegisterRequest;
pub enum Storage {
Valkey(valkey::ValkeyStorage),
}
pub trait StorageImpl {
async fn register_device(&self, request: &RegisterRequest) -> Result<()>;
async fn get_peers(&self) -> Result<Vec<Peer>>;
}
impl StorageImpl for Storage {
async fn register_device(&self, request: &RegisterRequest) -> Result<()> {
match self {
Self::Valkey(storage) => storage.register_device(request).await,
}
}
async fn get_peers(&self) -> Result<Vec<Peer>> {
match self {
Self::Valkey(storage) => storage.get_peers().await,
}
}
}
pub fn get_storage_from_env() -> Result<Storage> {
Ok(Storage::Valkey(valkey::ValkeyStorage {
valkey_client: redis::Client::open("redis://127.0.0.1:6379/")
.map_err(|e| Error::valkey_connect(e, "127.0.0.1:6379/".to_string()))?,
}))
}