/// <inheritdoc /> public override async Task <ICollection <WebHook> > QueryWebHooksAcrossAllUsersAsync(IEnumerable <string> actions, Func <WebHook, string, bool> predicate) { if (actions == null) { throw new ArgumentNullException("actions"); } predicate = predicate ?? DefaultPredicate; try { using (var context = new WebHookStoreContext()) { var registrations = await context.Registrations.ToArrayAsync(); var matches = new List <WebHook>(); foreach (var registration in registrations) { WebHook webHook = ConvertToWebHook(registration); if (MatchesAnyAction(webHook, actions) && predicate(webHook, registration.User)) { matches.Add(webHook); } } return(matches); } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Get", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <inheritdoc /> public override async Task <ICollection <WebHook> > GetAllWebHooksAsync(string user) { if (user == null) { throw new ArgumentNullException("user"); } user = NormalizeKey(user); try { using (var context = new WebHookStoreContext()) { var registrations = await context.Registrations.Where(r => r.User == user).ToArrayAsync(); ICollection <WebHook> result = registrations.Select(r => ConvertToWebHook(r)) .Where(w => w != null) .ToArray(); return(result); } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Get", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <inheritdoc /> public override async Task <WebHook> LookupWebHookAsync(string user, string id) { if (user == null) { throw new ArgumentNullException("user"); } if (id == null) { throw new ArgumentNullException("id"); } user = NormalizeKey(user); id = NormalizeKey(id); try { using (var context = new WebHookStoreContext()) { var registration = await context.Registrations.Where(r => r.User == user && r.Id == id).FirstOrDefaultAsync(); if (registration != null) { return(ConvertToWebHook(registration)); } return(null); } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Lookup", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <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<ICollection<WebHook>> GetAllWebHooksAsync(string user) { if (user == null) { throw new ArgumentNullException("user"); } user = NormalizeKey(user); try { using (var context = new WebHookStoreContext()) { var registrations = await context.Registrations.Where(r => r.User == user).ToArrayAsync(); var collection = new List<WebHook>(); foreach (var registration in registrations) { collection.Add(ConvertFromRegistration(registration)); } return collection; } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Get", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <inheritdoc /> public override async Task <ICollection <WebHook> > QueryWebHooksAsync(string user, IEnumerable <string> actions, Func <WebHook, string, bool> predicate) { if (user == null) { throw new ArgumentNullException("user"); } user = NormalizeKey(user); predicate = predicate ?? DefaultPredicate; try { using (var context = new WebHookStoreContext()) { var registrations = await context.Registrations.Where(r => r.User == user).ToArrayAsync(); ICollection <WebHook> matches = registrations.Select(r => ConvertToWebHook(r)) .Where(w => MatchesAnyAction(w, actions) && predicate(w, user)) .ToArray(); return(matches); } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Get", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <inheritdoc /> public override async Task<ICollection<WebHook>> GetAllWebHooksAsync(string user) { if (user == null) { throw new ArgumentNullException("user"); } user = NormalizeKey(user); try { using (var context = new WebHookStoreContext()) { var registrations = await context.Registrations.Where(r => r.User == user).ToArrayAsync(); ICollection<WebHook> result = registrations.Select(r => ConvertToWebHook(r)) .Where(w => w != null) .ToArray(); return result; } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Get", 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<ICollection<WebHook>> QueryWebHooksAsync(string user, IEnumerable<string> actions, Func<WebHook, string, bool> predicate) { if (user == null) { throw new ArgumentNullException("user"); } user = NormalizeKey(user); predicate = predicate ?? DefaultPredicate; try { using (var context = new WebHookStoreContext()) { var registrations = await context.Registrations.Where(r => r.User == user).ToArrayAsync(); ICollection<WebHook> matches = registrations.Select(r => ConvertToWebHook(r)) .Where(w => MatchesAnyAction(w, actions) && predicate(w, user)) .ToArray(); return matches; } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Get", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <inheritdoc /> public override async Task<ICollection<WebHook>> QueryWebHooksAcrossAllUsersAsync(IEnumerable<string> actions, Func<WebHook, string, bool> predicate) { if (actions == null) { throw new ArgumentNullException("actions"); } predicate = predicate ?? DefaultPredicate; try { using (var context = new WebHookStoreContext()) { var registrations = await context.Registrations.ToArrayAsync(); var matches = new List<WebHook>(); foreach (var registration in registrations) { WebHook webHook = ConvertToWebHook(registration); if (MatchesAnyAction(webHook, actions) && predicate(webHook, registration.User)) { matches.Add(webHook); } } return matches; } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Get", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }
/// <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; }
/// <inheritdoc /> public override async Task<WebHook> LookupWebHookAsync(string user, string id) { if (user == null) { throw new ArgumentNullException("user"); } if (id == null) { throw new ArgumentNullException("id"); } user = NormalizeKey(user); id = NormalizeKey(id); try { using (var context = new WebHookStoreContext()) { var registration = await context.Registrations.Where(r => r.User == user && r.Id == id).FirstOrDefaultAsync(); if (registration != null) { return ConvertToWebHook(registration); } return null; } } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, SqlStorageResources.SqlStore_OperationFailed, "Lookup", ex.Message); _logger.Error(msg, ex); throw new InvalidOperationException(msg, ex); } }