public async Task <MemeMessage> InsertMessage( string teamId, string teamDomain, string channelId, string channelName, ChannelType channelType, string userId, string userName, string templateId, string message, string imageUrl, bool isAnonymous) { if (teamId == null) { throw new ArgumentNullException(nameof(teamId)); } if (teamDomain == null) { throw new ArgumentNullException(nameof(teamDomain)); } if (channelId == null) { throw new ArgumentNullException(nameof(channelId)); } if (channelName == null) { throw new ArgumentNullException(nameof(channelName)); } if (userId == null) { throw new ArgumentNullException(nameof(userId)); } if (userName == null) { throw new ArgumentNullException(nameof(userName)); } if (templateId == null) { throw new ArgumentNullException(nameof(templateId)); } if (message == null) { throw new ArgumentNullException(nameof(message)); } if (imageUrl == null) { throw new ArgumentNullException(nameof(imageUrl)); } channelType.Validate(nameof(channelType)); var parameters = new { guid = Format(Guid.NewGuid()), now = Format(DateTime.UtcNow), teamId, teamDomain, channelId, channelName, channelType = Format(channelType), userId, userName, templateId, message, imageUrl, isAnonymous, }; return(await _connection.QuerySingleAsync <MemeMessage>($@" INSERT INTO {MESSAGE_TABLE} ( {nameof(MemeMessage.Guid)}, {nameof(MemeMessage.CreateDate)}, {nameof(MemeMessage.UpdateDate)}, {nameof(MemeMessage.TeamId)}, {nameof(MemeMessage.TeamDomain)}, {nameof(MemeMessage.ChannelId)}, {nameof(MemeMessage.ChannelName)}, {nameof(MemeMessage.ChannelType)}, {nameof(MemeMessage.UserId)}, {nameof(MemeMessage.UserName)}, {nameof(MemeMessage.TemplateId)}, {nameof(MemeMessage.Message)}, {nameof(MemeMessage.ImageUrl)}, {nameof(MemeMessage.IsAnonymous)} ) VALUES ( @{nameof(parameters.guid)}, @{nameof(parameters.now)}, @{nameof(parameters.now)}, @{nameof(parameters.teamId)}, @{nameof(parameters.teamDomain)}, @{nameof(parameters.channelId)}, @{nameof(parameters.channelName)}, @{nameof(parameters.channelType)}, @{nameof(parameters.userId)}, @{nameof(parameters.userName)}, @{nameof(parameters.templateId)}, @{nameof(parameters.message)}, @{nameof(parameters.imageUrl)}, @{nameof(parameters.isAnonymous)} ); SELECT * FROM {MESSAGE_VIEW} WHERE {nameof(MemeMessage.Id)} = last_insert_rowid();", parameters)); }