Merge branch 'conversationmanager-txn' into 'master'

Add transactional versions to delete message functions

See merge request briar/briar!1792
This commit is contained in:
Torsten Grote
2023-05-15 12:03:53 +00:00
2 changed files with 38 additions and 16 deletions

View File

@@ -96,12 +96,24 @@ public interface ConversationManager {
*/
DeletionResult deleteAllMessages(ContactId c) throws DbException;
/**
* Deletes all messages exchanged with the given contact.
*/
DeletionResult deleteAllMessages(Transaction txn, ContactId c)
throws DbException;
/**
* Deletes the given set of messages associated with the given contact.
*/
DeletionResult deleteMessages(ContactId c, Collection<MessageId> messageIds)
throws DbException;
/**
* Deletes the given set of messages associated with the given contact.
*/
DeletionResult deleteMessages(Transaction txn, ContactId c,
Collection<MessageId> messageIds) throws DbException;
@NotNullByDefault
interface ConversationClient {

View File

@@ -146,19 +146,30 @@ class ConversationManagerImpl implements ConversationManager {
@Override
public DeletionResult deleteAllMessages(ContactId c) throws DbException {
return db.transactionWithResult(false, txn -> {
return db.transactionWithResult(false, txn ->
deleteAllMessages(txn, c));
}
@Override
public DeletionResult deleteAllMessages(Transaction txn, ContactId c)
throws DbException {
DeletionResult result = new DeletionResult();
for (ConversationClient client : clients) {
result.addDeletionResult(client.deleteAllMessages(txn, c));
}
return result;
});
}
@Override
public DeletionResult deleteMessages(ContactId c,
Collection<MessageId> toDelete) throws DbException {
return db.transactionWithResult(false, txn -> {
return db.transactionWithResult(false, txn ->
deleteMessages(txn, c, toDelete));
}
@Override
public DeletionResult deleteMessages(Transaction txn, ContactId c,
Collection<MessageId> toDelete) throws DbException {
DeletionResult result = new DeletionResult();
for (ConversationClient client : clients) {
Set<MessageId> idSet = client.getMessageIds(txn, c);
@@ -166,7 +177,6 @@ class ConversationManagerImpl implements ConversationManager {
result.addDeletionResult(client.deleteMessages(txn, c, idSet));
}
return result;
});
}
}