/// <inheritdoc /> public override async Task DeleteAllWebHooksAsync(string user) { if (user == null) { throw new ArgumentNullException("user"); } user = NormalizeKey(user); try { using (var context = new WebHooksStoreContext()) { var matches = await context.Registrations.Where(r => r.User == user).ToArrayAsync(); foreach (var m in matches) { context.Entry(m).State = EntityState.Deleted; } await context.SaveChangesAsync(); } } catch (Exception ex) { string msg = string.Format(SqlStorageResource.SqlStore_OperationFailed, "DeleteAll", ex.Message); _logger.LogError(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <inheritdoc /> public override async Task <StoreResult> UpdateWebHookAsync(string user, WebHook webHook) { if (user == null) { throw new ArgumentNullException("user"); } if (webHook == null) { throw new ArgumentNullException("webHook"); } user = NormalizeKey(user); try { using (var context = new WebHooksStoreContext()) { var registration = await context.Registrations.Where(r => r.User == user && r.Id == webHook.Id).FirstOrDefaultAsync(); if (registration == null) { return(StoreResult.NotFound); } UpdateRegistrationFromWebHook(user, webHook, registration); context.Entry(registration).State = EntityState.Modified; await context.SaveChangesAsync(); } } catch (DbUpdateConcurrencyException ocex) { string msg = string.Format(SqlStorageResource.SqlStore_ConcurrencyError, "Update", ocex.Message); _logger.LogError(msg, ocex); return(StoreResult.Conflict); } catch (DbUpdateException uex) { string error = uex.GetBaseException().Message; string msg = string.Format(SqlStorageResource.SqlStore_SqlOperationFailed, "Update", error); _logger.LogError(msg, uex); return(StoreResult.Conflict); } catch (Exception ex) { string msg = string.Format(SqlStorageResource.SqlStore_OperationFailed, "Update", ex.Message); _logger.LogError(msg, ex); return(StoreResult.InternalError); } return(StoreResult.Success); }
/// <inheritdoc /> public override async Task <StoreResult> InsertWebHookAsync(string user, WebHook webHook) { if (user == null) { throw new ArgumentNullException("user"); } if (webHook == null) { throw new ArgumentNullException("webHook"); } user = NormalizeKey(user); try { using (var context = new WebHooksStoreContext()) { var registration = ConvertFromWebHook(user, webHook); context.Registrations.Attach(registration); context.Entry(registration).State = EntityState.Added; await context.SaveChangesAsync(); } } catch (DbUpdateConcurrencyException ocex) { string msg = string.Format(SqlStorageResource.SqlStore_ConcurrencyError, "Insert", ocex.Message); _logger.LogError(msg); return(StoreResult.Conflict); } catch (DbUpdateException uex) { string error = uex.GetBaseException().Message; string msg = string.Format(SqlStorageResource.SqlStore_SqlOperationFailed, "Insert", error); _logger.LogError(msg, uex); return(StoreResult.Conflict); } catch (Exception ex) { string msg = string.Format(SqlStorageResource.SqlStore_OperationFailed, "Insert", ex.Message); _logger.LogError(msg); return(StoreResult.InternalError); } return(StoreResult.Success); }