public async Task<QueryResult> AddContactRequest(ContactRequest request, CancellationToken cancellationToken)
 {
     Handle(cancellationToken);
     if (request == null)
         throw new ArgumentNullException(nameof(request));
     if (string.IsNullOrEmpty(request.Id) || string.IsNullOrEmpty(request.Message) || string.IsNullOrEmpty(request.Name) || string.IsNullOrEmpty(request.UserName)
         || string.IsNullOrEmpty(request.Target?.Id))
         throw new InvalidOperationException(nameof(request));
     var count =
         await
             Connection.ExecuteAsync(
                 $"INSERT INTO {Table} (Id, Message, Name, UserName, Target) VALUES(@Id, @Message, @Name, @UserName, @Target)",
                 new
                 {
                     request.Id,
                     request.Message,
                     request.Name,
                     request.UserName,
                     Target = request.Target.Id
                 });
     return QueryResult.Success(count);
 }
        public async Task<QueryResult> UpdateContactRequest(ContactRequest request, CancellationToken cancellationToken)
        {
            Handle(cancellationToken);
            if (request == null)
                throw new ArgumentNullException(nameof(request));
            if (string.IsNullOrEmpty(request.Id) || string.IsNullOrEmpty(request.Message) || string.IsNullOrEmpty(request.UserName) || string.IsNullOrEmpty(request.Name)
                || string.IsNullOrEmpty(request.Target?.Id))
                throw new InvalidOperationException(nameof(request));
            var count =
                await
                    Connection.ExecuteAsync(
                        $"UPDATE {Table} SET Message=@Message,UserName=@UserName,Name=@Name,Target=@Target WHERE Id=@Id", new
                        {
                            request.Id,

                        });
            return QueryResult.Success(count);
        }
 public async Task<QueryResult> DeleteContactRequest(ContactRequest request, CancellationToken cancellationToken)
 {
     Handle(cancellationToken);
     if (request == null)
         throw new ArgumentNullException(nameof(request));
     if (string.IsNullOrEmpty(request.Id) || string.IsNullOrEmpty(request.Message) || string.IsNullOrEmpty(request.Name) || string.IsNullOrEmpty(request.UserName) 
         || string.IsNullOrEmpty(request.Target?.Id))
         throw new InvalidOperationException(nameof(request));
     var count = await Connection.ExecuteAsync($"DELETE FROM {Table} WHERE Id=@Id AND Target=@Target", new
     {
         request.Id,
         Target = request.Target.Id
     });
     return QueryResult.Success(count);
 }