1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
use async_trait::async_trait; use pliantdb_core::{ kv::Kv, networking::{DatabaseRequest, DatabaseResponse, Request, Response}, schema::Schema, }; #[async_trait] impl<DB> Kv for super::RemoteDatabase<DB> where DB: Schema, { async fn execute_key_operation( &self, op: pliantdb_core::kv::KeyOperation, ) -> Result<pliantdb_core::kv::Output, pliantdb_core::Error> { match self .client .send_request(Request::Database { database: self.name.to_string(), request: DatabaseRequest::ExecuteKeyOperation(op), }) .await? { Response::Database(DatabaseResponse::KvOutput(output)) => Ok(output), Response::Error(err) => Err(err), other => Err(pliantdb_core::Error::Networking( pliantdb_core::networking::Error::UnexpectedResponse(format!("{:?}", other)), )), } } }