Skip to content

Commit f4cead9

Browse files
committed
refactor(governance): align approval and decision query namespaces
1 parent 5035482 commit f4cead9

9 files changed

Lines changed: 71 additions & 21 deletions

‎src/Governance/Abstractions/Queries/Contracts/IMutationRequestQueryStore.cs‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
using ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Approvals;
2+
using ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Decisions;
3+
using ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Requests;
14
using ModularityKit.Mutator.Governance.Abstractions.Requests.Model;
2-
using ModularityKit.Mutator.Governance.Abstractions.Queries.Model;
35

46
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Contracts;
57

src/Governance/Abstractions/Queries/Model/MutationApprovalQuery.cs renamed to src/Governance/Abstractions/Queries/Model/Approvals/MutationApprovalQuery.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
using ModularityKit.Mutator.Governance.Abstractions.Approval.Model;
22
using ModularityKit.Mutator.Governance.Abstractions.Lifecycle.Model;
33

4-
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model;
4+
using ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Requests;
5+
6+
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Approvals;
57

68
/// <summary>
79
/// Defines storage-agnostic filters for approval-oriented governance queries.

src/Governance/Abstractions/Queries/Model/MutationApprovalQueryEvaluator.cs renamed to src/Governance/Abstractions/Queries/Model/Approvals/MutationApprovalQueryEvaluator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
using ModularityKit.Mutator.Governance.Abstractions.Approval.Model;
2+
using ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Requests;
23
using ModularityKit.Mutator.Governance.Abstractions.Requests.Model;
34

4-
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model;
5+
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Approvals;
56

67
/// <summary>
78
/// Evaluates approval oriented query criteria against governed mutation requests.

src/Governance/Abstractions/Queries/Model/MutationApprovalView.cs renamed to src/Governance/Abstractions/Queries/Model/Approvals/MutationApprovalView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using ModularityKit.Mutator.Governance.Abstractions.Approval.Model;
22
using ModularityKit.Mutator.Governance.Abstractions.Requests.Model;
33

4-
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model;
4+
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Approvals;
55

66
/// <summary>
77
/// Represents one approval oriented projection from governed mutation request.

src/Governance/Abstractions/Queries/Model/MutationRequestDecisionQuery.cs renamed to src/Governance/Abstractions/Queries/Model/Decisions/MutationRequestDecisionQuery.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using ModularityKit.Mutator.Governance.Abstractions.Requests.Decisions;
22

3-
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model;
3+
using ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Requests;
4+
5+
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Decisions;
46

57
/// <summary>
68
/// Defines storage agnostic filters for decision oriented governance queries.

src/Governance/Abstractions/Queries/Model/MutationRequestDecisionQueryEvaluator.cs renamed to src/Governance/Abstractions/Queries/Model/Decisions/MutationRequestDecisionQueryEvaluator.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
using ModularityKit.Mutator.Governance.Abstractions.Requests.Decisions;
2+
using ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Requests;
23
using ModularityKit.Mutator.Governance.Abstractions.Requests.Model;
34

4-
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model;
5+
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Decisions;
56

67
/// <summary>
78
/// Evaluates decision oriented query criteria against governed mutation requests.

src/Governance/Abstractions/Queries/Model/MutationRequestDecisionView.cs renamed to src/Governance/Abstractions/Queries/Model/Decisions/MutationRequestDecisionView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using ModularityKit.Mutator.Governance.Abstractions.Requests.Decisions;
22
using ModularityKit.Mutator.Governance.Abstractions.Requests.Model;
33

4-
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model;
4+
namespace ModularityKit.Mutator.Governance.Abstractions.Queries.Model.Decisions;
55

66
/// <summary>
77
/// Represents one decision-oriented projection from a governed mutation request.

‎src/Governance/Abstractions/Requests/Decisions/MutationRequestDecision.cs‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,48 @@ public sealed record MutationRequestDecision
3232
/// </summary>
3333
public IReadOnlyDictionary<string, object> Metadata { get; init; } = new Dictionary<string, object>();
3434

35+
/// <summary>
36+
/// Creates a lifecycle decision entry.
37+
/// </summary>
38+
public static MutationRequestDecision Lifecycle(
39+
MutationRequestLifecycleDecisionType type,
40+
MutationContext context,
41+
string? reason = null,
42+
IReadOnlyDictionary<string, object>? metadata = null)
43+
=> Create(
44+
MutationRequestDecisionType.Lifecycle(type),
45+
context,
46+
reason,
47+
metadata);
48+
49+
/// <summary>
50+
/// Creates an approval decision entry.
51+
/// </summary>
52+
public static MutationRequestDecision Approval(
53+
MutationRequestApprovalDecisionType type,
54+
MutationContext context,
55+
string? reason = null,
56+
IReadOnlyDictionary<string, object>? metadata = null)
57+
=> Create(
58+
MutationRequestDecisionType.Approval(type),
59+
context,
60+
reason,
61+
metadata);
62+
63+
/// <summary>
64+
/// Creates a version-resolution decision entry.
65+
/// </summary>
66+
public static MutationRequestDecision VersionResolution(
67+
MutationRequestVersionResolutionDecisionType type,
68+
MutationContext context,
69+
string? reason = null,
70+
IReadOnlyDictionary<string, object>? metadata = null)
71+
=> Create(
72+
MutationRequestDecisionType.VersionResolution(type),
73+
context,
74+
reason,
75+
metadata);
76+
3577
/// <summary>
3678
/// Creates a new request decision entry.
3779
/// </summary>

‎src/Governance/Abstractions/Requests/Factory/MutationRequestFactory.cs‎

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,12 @@ public static MutationRequest Pending(
6969
Metadata = metadata ?? new Dictionary<string, object>(),
7070
Decisions =
7171
[
72-
MutationRequestDecision.Create(
73-
MutationRequestDecisionType.Lifecycle(MutationRequestLifecycleDecisionType.Submitted),
72+
MutationRequestDecision.Lifecycle(
73+
MutationRequestLifecycleDecisionType.Submitted,
7474
context,
7575
reason: context.Reason),
76-
MutationRequestDecision.Create(
77-
MutationRequestDecisionType.Lifecycle(MutationRequestLifecycleDecisionType.Pending),
76+
MutationRequestDecision.Lifecycle(
77+
MutationRequestLifecycleDecisionType.Pending,
7878
context,
7979
reason: $"Request entered pending lifecycle for reason '{pendingReason}'.")
8080
]
@@ -140,16 +140,16 @@ public static MutationRequest PendingApproval(
140140
Metadata = metadata ?? new Dictionary<string, object>(),
141141
Decisions =
142142
[
143-
MutationRequestDecision.Create(
144-
MutationRequestDecisionType.Lifecycle(MutationRequestLifecycleDecisionType.Submitted),
143+
MutationRequestDecision.Lifecycle(
144+
MutationRequestLifecycleDecisionType.Submitted,
145145
context,
146146
reason: context.Reason),
147-
MutationRequestDecision.Create(
148-
MutationRequestDecisionType.Lifecycle(MutationRequestLifecycleDecisionType.Pending),
147+
MutationRequestDecision.Lifecycle(
148+
MutationRequestLifecycleDecisionType.Pending,
149149
context,
150150
reason: "Request entered pending approval."),
151-
MutationRequestDecision.Create(
152-
MutationRequestDecisionType.Approval(MutationRequestApprovalDecisionType.Requested),
151+
MutationRequestDecision.Approval(
152+
MutationRequestApprovalDecisionType.Requested,
153153
context,
154154
reason: $"Request requires {approvalRequirements.Count} approval action(s).",
155155
metadata: new Dictionary<string, object>
@@ -203,12 +203,12 @@ public static MutationRequest Approved(
203203
Metadata = metadata ?? new Dictionary<string, object>(),
204204
Decisions =
205205
[
206-
MutationRequestDecision.Create(
207-
MutationRequestDecisionType.Lifecycle(MutationRequestLifecycleDecisionType.Submitted),
206+
MutationRequestDecision.Lifecycle(
207+
MutationRequestLifecycleDecisionType.Submitted,
208208
context,
209209
reason: context.Reason),
210-
MutationRequestDecision.Create(
211-
MutationRequestDecisionType.Lifecycle(MutationRequestLifecycleDecisionType.Approved),
210+
MutationRequestDecision.Lifecycle(
211+
MutationRequestLifecycleDecisionType.Approved,
212212
context,
213213
reason: "Approved at submission time")
214214
]

0 commit comments

Comments
 (0)