public async Task <Transaction> UpdateTransaction(string authId, UpdateTransactionInput input) { await using var connection = await _databaseConnectionFactory.GetConnection(); var existingTransaction = await connection.QuerySingleOrDefaultAsync <TransactionRecord>( "SELECT id FROM transaction WHERE auth_id = @AuthId AND id = @TransactionId", new { AuthId = authId, TransactionId = input.TransactionId }); if (existingTransaction == null) { throw new Exception("Transaction not found"); // TODO - Handle with custom exception } var sql = "UPDATE transaction SET category = @Category, details = @Details WHERE auth_id = @AuthId AND id = @TransactionId"; var affectedRows = await connection.ExecuteAsync(sql, new { Category = input.Category, Details = input.Details, TransactionId = input.TransactionId, AuthId = authId }); Console.WriteLine($"Affected rows: {affectedRows}"); var transaction = (await GetTransactionsForIds(new[] { input.TransactionId })).First(); return(transaction); }
public async Task <IActionResult> UpdateTransaction(UpdateTransactionInput input) { var authId = GetAuthId(); var result = await _transactionsService.UpdateTransaction(authId, input); return(Ok(result)); }
public async Task CanUpdateTransaction() { var input = GetInput(); var importedTransactions = await _transactionsRepository.ImportTransactions(_authId, input); var transaction = importedTransactions.First(); var category = "Food and drink"; var details = "New World Weekly Shop"; var updateInput = new UpdateTransactionInput(transaction.Id, category, details); var updatedTransaction = await _transactionsRepository.UpdateTransaction(_authId, updateInput); Assert.Equal(transaction.Id, updatedTransaction.Id); Assert.Equal(category, updatedTransaction.Category); Assert.Equal(details, updatedTransaction.Details); }
public Task <Transaction> UpdateTransaction(string authId, UpdateTransactionInput input) { return(_transactionsRepository.UpdateTransaction(authId, input)); }