@@ -10,18 +10,19 @@ namespace FeatureFlags.Mutations;
1010/// <summary>
1111/// Mutation that enables feature flag in the current <see cref="FeatureFlagsState"/>.
1212/// </summary>
13- internal sealed record EnableFeatureMutation ( string FeatureName , MutationContext Context ) : IMutation < FeatureFlagsState >
13+ internal sealed class EnableFeatureMutation ( string featureName , MutationContext context )
14+ : MutationBase < FeatureFlagsState > (
15+ CreateIntent (
16+ operationName : "EnableFeature" ,
17+ category : "Security" ,
18+ description : "Enables a feature flag." ,
19+ riskLevel : MutationRiskLevel . High ,
20+ tags : new HashSet < string > { "auth" } ) ,
21+ context )
1422{
15- public MutationIntent Intent { get ; } = new ( )
16- {
17- OperationName = "EnableFeature" ,
18- Category = "Security" ,
19- Tags = new HashSet < string > { "auth" } ,
20- RiskLevel = MutationRiskLevel . High ,
21- Description = "Enables a feature flag."
22- } ;
23+ public string FeatureName { get ; } = featureName ;
2324
24- public MutationResult < FeatureFlagsState > Apply ( FeatureFlagsState state )
25+ public override MutationResult < FeatureFlagsState > Apply ( FeatureFlagsState state )
2526 {
2627 if ( state . Flags . TryGetValue ( FeatureName , out var oldValue ) && oldValue )
2728 return MutationResult < FeatureFlagsState > . Success ( state , ChangeSet . Empty ) ;
@@ -31,13 +32,12 @@ public MutationResult<FeatureFlagsState> Apply(FeatureFlagsState state)
3132 [ FeatureName ] = true
3233 } ;
3334 var newState = state with { Flags = newFlags } ;
34- var changes = ChangeSet . Single (
35- StateChange . Modified ( $ "Flags.{ FeatureName } ", oldValue , true )
36- ) ;
37- return MutationResult < FeatureFlagsState > . Success ( newState , changes ) ;
35+ return Success (
36+ newState ,
37+ StateChange . Modified ( $ "Flags.{ FeatureName } ", oldValue , true ) ) ;
3838 }
3939
40- public ValidationResult Validate ( FeatureFlagsState state )
40+ public override ValidationResult Validate ( FeatureFlagsState state )
4141 {
4242 var result = new ValidationResult ( ) ;
4343 if ( string . IsNullOrEmpty ( FeatureName ) )
@@ -50,6 +50,4 @@ public ValidationResult Validate(FeatureFlagsState state)
5050 }
5151 return result ;
5252 }
53-
54- public MutationResult < FeatureFlagsState > Simulate ( FeatureFlagsState state ) => Apply ( state ) ;
55- }
53+ }
0 commit comments