1
0
mirror of https://github.com/bitwarden/server.git synced 2025-04-18 11:38:15 -05:00

catch sql FK violations on webhook tx creation

This commit is contained in:
Kyle Spearrin 2019-02-07 17:28:09 -05:00
parent 22c049c9c5
commit 1dc22f61d1
2 changed files with 24 additions and 12 deletions

View File

@ -4,6 +4,7 @@ using Bit.Core.Repositories;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Data.SqlClient;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -64,18 +65,23 @@ namespace Bit.Billing.Controllers
var ids = sale.GetIdsFromCustom(); var ids = sale.GetIdsFromCustom();
if(ids.Item1.HasValue || ids.Item2.HasValue) if(ids.Item1.HasValue || ids.Item2.HasValue)
{ {
await _transactionRepository.CreateAsync(new Core.Models.Table.Transaction try
{ {
Amount = sale.Amount.TotalAmount, await _transactionRepository.CreateAsync(new Core.Models.Table.Transaction
CreationDate = sale.CreateTime, {
OrganizationId = ids.Item1, Amount = sale.Amount.TotalAmount,
UserId = ids.Item2, CreationDate = sale.CreateTime,
Type = TransactionType.Charge, OrganizationId = ids.Item1,
Gateway = GatewayType.PayPal, UserId = ids.Item2,
GatewayId = sale.Id, Type = TransactionType.Charge,
PaymentMethodType = PaymentMethodType.PayPal, Gateway = GatewayType.PayPal,
Details = sale.Id GatewayId = sale.Id,
}); PaymentMethodType = PaymentMethodType.PayPal,
Details = sale.Id
});
}
// Catch foreign key violations because user/org could have been deleted.
catch(SqlException e) when(e.Number == 547) { }
} }
} }
} }

View File

@ -9,6 +9,7 @@ using Microsoft.Extensions.Options;
using Stripe; using Stripe;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -227,7 +228,12 @@ namespace Bit.Billing.Controllers
return new OkResult(); return new OkResult();
} }
await _transactionRepository.CreateAsync(tx); try
{
await _transactionRepository.CreateAsync(tx);
}
// Catch foreign key violations because user/org could have been deleted.
catch(SqlException e) when(e.Number == 547) { }
} }
} }
} }