public static void OptimizeAsync_GivenInvalidOptimizeFeaturesValue_ThrowsArgumentException() { var connection = CreateConnectionFactory(); var connPragma = CreateConnectionPragma(connection); const OptimizeFeatures newValue = (OptimizeFeatures)55; Assert.That(() => connPragma.OptimizeAsync(newValue), Throws.ArgumentException); }
/// <summary> /// Creates a query that sets the legacy alter table pragma. /// </summary> /// <param name="features">The optimisation options to run.</param> /// <returns>A SQL query.</returns> /// <exception cref="ArgumentException"><paramref name="features"/> is an invalid enum.</exception> protected virtual string OptimizeSetQuery(OptimizeFeatures features) { if (!features.IsValid()) { throw new ArgumentException($"The { nameof(OptimizeFeatures) } provided must be a valid enum.", nameof(features)); } var value = (int)features; return(PragmaPrefix + "optimize = " + value); }
/// <summary> /// Attempt to optimize the database. /// </summary> /// <param name="features">The optimisation options to run.</param> /// <param name="cancellationToken">The cancellation token.</param> public Task <IEnumerable <string> > OptimizeAsync(OptimizeFeatures features = OptimizeFeatures.Analyze, CancellationToken cancellationToken = default) => DbConnection.QueryAsync <string>(OptimizeSetQuery(features), cancellationToken);