/// <inheritdoc /> public override async Task DeleteAllWebHooksAsync(string user) { if (user == null) { throw new ArgumentNullException("user"); } user = NormalizeKey(user); try { using (var context = new WebHookStoreContext()) { 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(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "DeleteAll", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <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 WebHookStoreContext()) { var registration = ConvertFromWebHook(user, webHook); context.Registrations.Attach(registration); context.Entry(registration).State = EntityState.Added; await context.SaveChangesAsync(); } } catch (DbUpdateException uex) { string error = uex.GetBaseException().Message; string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_SqlOperationFailed, "Insert", error); _logger.Error(msg, uex); return(StoreResult.Conflict); } catch (OptimisticConcurrencyException ocex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_ConcurrencyError, "Insert", ocex.Message); _logger.Error(msg, ocex); return(StoreResult.Conflict); } catch (SqlException sqlex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_SqlOperationFailed, "Insert", sqlex.Message); _logger.Error(msg, sqlex); return(StoreResult.OperationError); } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Insert", ex.Message); _logger.Error(msg, ex); return(StoreResult.InternalError); } return(StoreResult.Success); }
/// <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 WebHookStoreContext()) { 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 (OptimisticConcurrencyException ocex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_ConcurrencyError, "Update", ocex.Message); _logger.Error(msg, ocex); return(StoreResult.Conflict); } catch (SqlException sqlex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_SqlOperationFailed, "Update", sqlex.Message); _logger.Error(msg, sqlex); return(StoreResult.OperationError); } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Update", ex.Message); _logger.Error(msg, ex); return(StoreResult.InternalError); } return(StoreResult.Success); }
/// <inheritdoc /> public override async Task<StoreResult> DeleteWebHookAsync(string user, string id) { if (user == null) { throw new ArgumentNullException("user"); } if (id == null) { throw new ArgumentNullException("id"); } user = NormalizeKey(user); try { using (var context = new WebHookStoreContext()) { var match = await context.Registrations.Where(r => r.User == user && r.Id == id).FirstOrDefaultAsync(); if (match == null) { return StoreResult.NotFound; } context.Entry(match).State = EntityState.Deleted; await context.SaveChangesAsync(); } } catch (OptimisticConcurrencyException ocex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_ConcurrencyError, "Delete", ocex.Message); _logger.Error(msg, ocex); return StoreResult.Conflict; } catch (SqlException sqlex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_SqlOperationFailed, "Delete", sqlex.Message); _logger.Error(msg, sqlex); return StoreResult.OperationError; } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Delete", ex.Message); _logger.Error(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 WebHookStoreContext()) { var registration = ConvertFromWebHook(user, webHook); context.Registrations.Attach(registration); context.Entry(registration).State = EntityState.Added; await context.SaveChangesAsync(); } } catch (DbUpdateException uex) { string error = uex.GetBaseException().Message; string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_SqlOperationFailed, "Insert", error); _logger.Error(msg, uex); return StoreResult.Conflict; } catch (OptimisticConcurrencyException ocex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_ConcurrencyError, "Insert", ocex.Message); } catch (SqlException sqlex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_SqlOperationFailed, "Insert", sqlex.Message); _logger.Error(msg, sqlex); return StoreResult.OperationError; } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Insert", ex.Message); _logger.Error(msg, ex); return StoreResult.InternalError; } return StoreResult.Success; }