private static async Task DeleteRecipientsAsync(Message message, MySqlConnection sqlConnection)
 {
     foreach (var recipient in message.Recipients)
     {
         await sqlConnection.DeleteAsync(recipient);
     }
 }
        public async Task DeleteRecipientAsync(Recipient recipient)
        {
            if (recipient == null)
                throw new ArgumentNullException(nameof(recipient));

            using (var sqlConnection = new MySqlConnection(_connectionString))
            {
                sqlConnection.Open();

                await sqlConnection.DeleteAsync(recipient);
            }
        }
        public async Task DeleteAsync(Message message)
        {
            if (message.AccountId > 0)
                throw new InvalidOperationException(string.Format("Use DeleteAsync(account, message)"));

            var filename = Path.Combine(_dataDirectory, message.Filename);

            using (var sqlConnection = new MySqlConnection(_connectionString))
            {
                sqlConnection.Open();
                await sqlConnection.DeleteAsync(message);

                await DeleteRecipientsAsync(message, sqlConnection);
            }

            File.Delete(filename);
        }
        public async Task DeleteAsync(Account account, Message message)
        {
            if (account == null)
                throw new ArgumentNullException(nameof(account));
            if (message == null)
                throw new ArgumentNullException(nameof(message));

            var filename = GetMessageFullFileName(account, message);

            using (var sqlConnection = new MySqlConnection(_connectionString))
            {
                sqlConnection.Open();
                await sqlConnection.DeleteAsync(message);

                await DeleteRecipientsAsync(message, sqlConnection);
            }

            File.Delete(filename);
        }