Skip to content

Commit

Permalink
feat(repository): added message repository for routed messages
Browse files Browse the repository at this point in the history
  • Loading branch information
Christiantyemele committed Sep 12, 2024
1 parent 4d19ef5 commit e5f4305
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 155 deletions.
1 change: 0 additions & 1 deletion crates/plugins/mediator-coordination/src/forward/mod.rs

This file was deleted.

132 changes: 0 additions & 132 deletions crates/plugins/mediator-coordination/src/forward/routing.rs

This file was deleted.

2 changes: 1 addition & 1 deletion crates/plugins/mediator-coordination/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
pub mod client;
pub mod plugin;
pub mod forward;


mod constant;
mod didcomm;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ pub struct Connection {
pub routing_did: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct Messages {
pub struct RoutedMessage {
#[serde(rename = "_id")]
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<ObjectId>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use mongodb::{
};

use crate::{
model::stateful::entity::{Connection, Messages, Secrets},
model::stateful::entity::{Connection, RoutedMessage, Secrets},
repository::traits::{Entity, Repository, RepositoryError},
};

Expand Down Expand Up @@ -118,7 +118,7 @@ impl MongoSecretsRepository {
}
}
pub struct MongoMessagesRepository {
collection: Collection<Messages>,
collection: Collection<RoutedMessage>,
}
impl MongoMessagesRepository {
pub fn from_db(db: &Database) -> Self {
Expand All @@ -128,9 +128,9 @@ impl MongoMessagesRepository {
}
}
#[async_trait]
impl Repository<Messages> for MongoMessagesRepository {
async fn find_all(&self) -> Result<Vec<Messages>, RepositoryError> {
let mut messages: Vec<Messages> = vec![];
impl Repository<RoutedMessage> for MongoMessagesRepository {
async fn find_all(&self) -> Result<Vec<RoutedMessage>, RepositoryError> {
let mut messages: Vec<RoutedMessage> = vec![];

// Retrieve all messages from the database
let mut cursor = self.collection.find(None, None).await?;
Expand All @@ -140,21 +140,21 @@ impl Repository<Messages> for MongoMessagesRepository {

Ok(messages)
}
async fn find_one(&self, message_id: ObjectId) -> Result<Option<Messages>, RepositoryError> {
async fn find_one(&self, message_id: ObjectId) -> Result<Option<RoutedMessage>, RepositoryError> {
// Query the database for the specified message ID
self.find_one_by(doc! {"_id": message_id}).await
}
async fn find_one_by(&self, filter: BsonDocument) -> Result<Option<Messages>, RepositoryError> {
async fn find_one_by(&self, filter: BsonDocument) -> Result<Option<RoutedMessage>, RepositoryError> {
// Query the database for the specified message ID
Ok(self.collection.find_one(filter, None).await?)
}
async fn store(&self, message: Messages) -> Result<Messages, RepositoryError> {
async fn store(&self, message: RoutedMessage) -> Result<RoutedMessage, RepositoryError> {
// Insert the new message into the database
let metadata = self.collection.insert_one(message.clone(), None).await?;

// Return persisted message
Ok(match metadata.inserted_id {
Bson::ObjectId(oid) => Messages {
Bson::ObjectId(oid) => RoutedMessage {
id: Some(oid),
..message
},
Expand All @@ -175,7 +175,7 @@ impl Repository<Messages> for MongoMessagesRepository {
}
}

async fn update(&self, message: Messages) -> Result<Messages, RepositoryError> {
async fn update(&self, message: RoutedMessage) -> Result<RoutedMessage, RepositoryError> {
if message.id.is_none() {
return Err(RepositoryError::MissingIdentifier);
}
Expand Down Expand Up @@ -395,10 +395,10 @@ pub mod tests {
}
}
pub struct MockMessagesRepository {
messages: RwLock<Vec<Messages>>,
messages: RwLock<Vec<RoutedMessage>>,
}
impl MockMessagesRepository {
pub fn from(messages: Vec<Messages>) -> Self {
pub fn from(messages: Vec<RoutedMessage>) -> Self {
Self {
messages: RwLock::new(messages),
}
Expand Down Expand Up @@ -482,22 +482,22 @@ pub mod tests {
}

#[async_trait]
impl Repository<Messages> for MockMessagesRepository {
async fn find_all(&self) -> Result<Vec<Messages>, RepositoryError> {
impl Repository<RoutedMessage> for MockMessagesRepository {
async fn find_all(&self) -> Result<Vec<RoutedMessage>, RepositoryError> {
Ok(self.messages.read().unwrap().clone())
}

async fn find_one(
&self,
secrets_id: ObjectId,
) -> Result<Option<Messages>, RepositoryError> {
) -> Result<Option<RoutedMessage>, RepositoryError> {
self.find_one_by(doc! {"_id": secrets_id}).await
}

async fn find_one_by(
&self,
filter: BsonDocument,
) -> Result<Option<Messages>, RepositoryError> {
) -> Result<Option<RoutedMessage>, RepositoryError> {
let filter: HashMap<String, Bson> = filter.into_iter().collect();

Ok(self
Expand All @@ -517,15 +517,15 @@ pub mod tests {
.cloned())
}

async fn store(&self, messages: Messages) -> Result<Messages, RepositoryError> {
async fn store(&self, messages: RoutedMessage) -> Result<RoutedMessage, RepositoryError> {
// Add new entity to collection
self.messages.write().unwrap().push(messages.clone());

// Return added entity
Ok(messages)
}

async fn update(&self, messages: Messages) -> Result<Messages, RepositoryError> {
async fn update(&self, messages: RoutedMessage) -> Result<RoutedMessage, RepositoryError> {
// Find entity to update
let pos = self
.messages
Expand Down
4 changes: 2 additions & 2 deletions crates/plugins/mediator-coordination/src/web/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use std::sync::Arc;

use crate::{
didcomm::bridge::{LocalDIDResolver, LocalSecretsResolver},
model::stateful::entity::{Connection, Messages, Secrets},
model::stateful::entity::{Connection, RoutedMessage, Secrets},
repository::traits::Repository,
util,
};
Expand Down Expand Up @@ -48,7 +48,7 @@ pub struct AppState {
pub struct AppStateRepository {
pub connection_repository: Arc<dyn Repository<Connection>>,
pub secret_repository: Arc<dyn Repository<Secrets>>,
pub message_repository: Arc<dyn Repository<Messages>>,
pub message_repository: Arc<dyn Repository<RoutedMessage>>,
}

impl AppState {
Expand Down

0 comments on commit e5f4305

Please sign in to comment.